X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fsh%2Fmm%2Fconsistent.c;h=38c82d890ffda6a5cb332ad3b387bde0476dc551;hb=refs%2Fheads%2Fvserver;hp=789bacf1a7aa4714b282ed045f59a38d8558df8d;hpb=9bf4aaab3e101692164d49b7ca357651eb691cb6;p=linux-2.6.git diff --git a/arch/sh/mm/consistent.c b/arch/sh/mm/consistent.c index 789bacf1a..38c82d890 100644 --- a/arch/sh/mm/consistent.c +++ b/arch/sh/mm/consistent.c @@ -9,9 +9,11 @@ */ #include #include +#include +#include #include -void *consistent_alloc(int gfp, size_t size, dma_addr_t *handle) +void *consistent_alloc(gfp_t gfp, size_t size, dma_addr_t *handle) { struct page *page, *end, *free; void *ret; @@ -23,8 +25,10 @@ void *consistent_alloc(int gfp, size_t size, dma_addr_t *handle) page = alloc_pages(gfp, order); if (!page) return NULL; + split_page(page, order); ret = page_address(page); + memset(ret, 0, size); *handle = virt_to_phys(ret); /* @@ -37,8 +41,6 @@ void *consistent_alloc(int gfp, size_t size, dma_addr_t *handle) end = page + (1 << order); while (++page < end) { - set_page_count(page, 1); - /* Free any unused pages */ if (page >= free) { __free_page(page); @@ -78,4 +80,8 @@ void consistent_sync(void *vaddr, size_t size, int direction) BUG(); } } + +EXPORT_SYMBOL(consistent_alloc); +EXPORT_SYMBOL(consistent_free); EXPORT_SYMBOL(consistent_sync); +