|
@@ -414,17 +414,17 @@ void flush_dcache_icache_page(struct page *page)
|
|
|
return;
|
|
|
}
|
|
|
#endif
|
|
|
-#ifdef CONFIG_BOOKE
|
|
|
- {
|
|
|
+#if defined(CONFIG_8xx) || defined(CONFIG_PPC64)
|
|
|
+ /* On 8xx there is no need to kmap since highmem is not supported */
|
|
|
+ __flush_dcache_icache(page_address(page));
|
|
|
+#else
|
|
|
+ if (IS_ENABLED(CONFIG_BOOKE) || sizeof(phys_addr_t) > sizeof(void *)) {
|
|
|
void *start = kmap_atomic(page);
|
|
|
__flush_dcache_icache(start);
|
|
|
kunmap_atomic(start);
|
|
|
+ } else {
|
|
|
+ __flush_dcache_icache_phys(page_to_pfn(page) << PAGE_SHIFT);
|
|
|
}
|
|
|
-#elif defined(CONFIG_8xx) || defined(CONFIG_PPC64)
|
|
|
- /* On 8xx there is no need to kmap since highmem is not supported */
|
|
|
- __flush_dcache_icache(page_address(page));
|
|
|
-#else
|
|
|
- __flush_dcache_icache_phys(page_to_pfn(page) << PAGE_SHIFT);
|
|
|
#endif
|
|
|
}
|
|
|
EXPORT_SYMBOL(flush_dcache_icache_page);
|