@@ -364,16 +364,21 @@ static void __flush_cache_one(unsigned l
a += 64;
p += 64;
} while (a < ea);
base_addr += way_incr;
} while (--way_count != 0);
}
+static void sh4_flush_icache_page(void *page)
+{
+ __flush_purge_region(page_address(page), PAGE_SIZE);
+}
+
extern void __weak sh4__flush_region_init(void);
/*
* SH-4 has virtually indexed and physically tagged cache.
*/
void __init sh4_cache_init(void)
{
printk("PVR=%08x CVR=%08x PRR=%08x\n",
@@ -383,11 +388,12 @@ void __init sh4_cache_init(void)
local_flush_icache_range = sh4_flush_icache_range;
local_flush_dcache_page = sh4_flush_dcache_page;
local_flush_cache_all = sh4_flush_cache_all;
local_flush_cache_mm = sh4_flush_cache_mm;
local_flush_cache_dup_mm = sh4_flush_cache_mm;
local_flush_cache_page = sh4_flush_cache_page;
local_flush_cache_range = sh4_flush_cache_range;
+ local_flush_icache_page = sh4_flush_icache_page;
sh4__flush_region_init();
}