sh: Kill off broken PHYSADDR() usage in sh4_flush_dcache_page().
authorPaul Mundt <lethal@linux-sh.org>
Wed, 9 Sep 2009 05:10:28 +0000 (14:10 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Wed, 9 Sep 2009 05:10:28 +0000 (14:10 +0900)
PHYSADDR() runs in to issues in 32-bit mode when we do not have the
legacy P1/P2 areas mapped, as such, we need to use page_to_phys()
directly, which also happens to do the right thing in legacy 29-bit mode.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/mm/cache-sh4.c

index a5c339b..f099960 100644 (file)
@@ -123,12 +123,12 @@ static void sh4_flush_dcache_page(void *arg)
        else
 #endif
        {
-               unsigned long phys = PHYSADDR(page_address(page));
+               unsigned long phys = page_to_phys(page);
                unsigned long addr = CACHE_OC_ADDRESS_ARRAY;
                int i, n;
 
                /* Loop all the D-cache */
-               n = boot_cpu_data.dcache.n_aliases;
+               n = boot_cpu_data.dcache.way_incr >> 12;
                for (i = 0; i < n; i++, addr += 4096)
                        flush_cache_4096(addr, phys);
        }