···553553554554extern unsigned long ioremap_bot, ioremap_base;555555556556-void consistent_sync(void *vaddr, size_t size, int direction);557557-void consistent_sync_page(struct page *page, unsigned long offset,558558- size_t size, int direction);559556unsigned long consistent_virt_to_pfn(void *vaddr);560557561558void setup_memory(void);
-45
arch/microblaze/mm/consistent.c
···220220 flush_tlb_all();221221#endif222222}223223-224224-/*225225- * make an area consistent.226226- */227227-void consistent_sync(void *vaddr, size_t size, int direction)228228-{229229- unsigned long start;230230- unsigned long end;231231-232232- start = (unsigned long)vaddr;233233-234234- /* Convert start address back down to unshadowed memory region */235235-#ifdef CONFIG_XILINX_UNCACHED_SHADOW236236- start &= ~UNCACHED_SHADOW_MASK;237237-#endif238238- end = start + size;239239-240240- switch (direction) {241241- case PCI_DMA_NONE:242242- BUG();243243- case PCI_DMA_FROMDEVICE: /* invalidate only */244244- invalidate_dcache_range(start, end);245245- break;246246- case PCI_DMA_TODEVICE: /* writeback only */247247- flush_dcache_range(start, end);248248- break;249249- case PCI_DMA_BIDIRECTIONAL: /* writeback and invalidate */250250- flush_dcache_range(start, end);251251- break;252252- }253253-}254254-EXPORT_SYMBOL(consistent_sync);255255-256256-/*257257- * consistent_sync_page makes memory consistent. identical258258- * to consistent_sync, but takes a struct page instead of a259259- * virtual address260260- */261261-void consistent_sync_page(struct page *page, unsigned long offset,262262- size_t size, int direction)263263-{264264- unsigned long start = (unsigned long)page_address(page) + offset;265265- consistent_sync((void *)start, size, direction);266266-}267267-EXPORT_SYMBOL(consistent_sync_page);