From: Create the coherent DMA allocation functions for m68knommu. No current hardware in this class requires anything special, so it just just does normal allocations after sanity checks. --- 25-akpm/arch/m68knommu/kernel/dma.c | 36 ++++++++++++++++++++++++++++++++++++ 1 files changed, 36 insertions(+) diff -puN /dev/null arch/m68knommu/kernel/dma.c --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ 25-akpm/arch/m68knommu/kernel/dma.c 2004-04-07 19:43:56.864933392 -0700 @@ -0,0 +1,36 @@ +/* + * Dynamic DMA mapping support. + * + * We never have any address translations to worry about, so this + * is just alloc/free. + */ + +#include +#include +#include +#include +#include + +void *dma_alloc_coherent(struct device *dev, size_t size, + dma_addr_t *dma_handle, int gfp) +{ + void *ret; + /* ignore region specifiers */ + gfp &= ~(__GFP_DMA | __GFP_HIGHMEM); + + if (dev == NULL || (*dev->dma_mask < 0xffffffff)) + gfp |= GFP_DMA; + ret = (void *)__get_free_pages(gfp, get_order(size)); + + if (ret != NULL) { + memset(ret, 0, size); + *dma_handle = virt_to_phys(ret); + } + return ret; +} + +void dma_free_coherent(struct device *dev, size_t size, + void *vaddr, dma_addr_t dma_handle) +{ + free_pages((unsigned long)vaddr, get_order(size)); +} _