#include <machine/cpu-v6.h>
#include <machine/md_var.h>
+#if __ARM_ARCH < 6
+#define BUSDMA_DCACHE_ALIGN arm_dcache_align
+#define BUSDMA_DCACHE_MASK arm_dcache_align_mask
+#else
+#define BUSDMA_DCACHE_ALIGN cpuinfo.dcache_line_size
+#define BUSDMA_DCACHE_MASK cpuinfo.dcache_line_mask
+#endif
+
#define MAX_BPAGES 64
#define MAX_DMA_SEGMENTS 4096
#define BUS_DMA_EXCL_BOUNCE BUS_DMA_BUS2
/* Create a cache of buffers in standard (cacheable) memory. */
standard_allocator = busdma_bufalloc_create("buffer",
- arm_dcache_align, /* minimum_alignment */
+ BUSDMA_DCACHE_ALIGN,/* minimum_alignment */
NULL, /* uma_alloc func */
NULL, /* uma_free func */
uma_flags); /* uma_zcreate_flags */
* BUS_DMA_COHERENT (and potentially BUS_DMA_NOCACHE) flag.
*/
coherent_allocator = busdma_bufalloc_create("coherent",
- arm_dcache_align, /* minimum_alignment */
+ BUSDMA_DCACHE_ALIGN,/* minimum_alignment */
busdma_bufalloc_alloc_uncacheable,
busdma_bufalloc_free_uncacheable,
uma_flags); /* uma_zcreate_flags */
* as dcache_wb_poc() will do the rounding for us and works
* at cacheline granularity.
*/
- if (va & cpuinfo.dcache_line_mask)
+ if (va & BUSDMA_DCACHE_MASK)
dcache_wb_poc(va, pa, 1);
- if ((va + size) & cpuinfo.dcache_line_mask)
+ if ((va + size) & BUSDMA_DCACHE_MASK)
dcache_wb_poc(va + size, pa + size, 1);
dcache_inv_poc_dma(va, pa, size);