Merge tag 'libnvdimm-for-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm...
[cascardo/linux.git] / arch / powerpc / mm / mem.c
index 6571cfb..22d94c3 100644 (file)
@@ -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);