|
@@ -2181,6 +2181,20 @@ static void __cpuinit build_r4000_tlb_modify_handler(void)
|
|
|
dump_handler("r4000_tlb_modify", handle_tlbm, ARRAY_SIZE(handle_tlbm));
|
|
|
}
|
|
|
|
|
|
+static void __cpuinit flush_tlb_handlers(void)
|
|
|
+{
|
|
|
+ local_flush_icache_range((unsigned long)handle_tlbl,
|
|
|
+ (unsigned long)handle_tlbl + sizeof(handle_tlbl));
|
|
|
+ local_flush_icache_range((unsigned long)handle_tlbs,
|
|
|
+ (unsigned long)handle_tlbs + sizeof(handle_tlbs));
|
|
|
+ local_flush_icache_range((unsigned long)handle_tlbm,
|
|
|
+ (unsigned long)handle_tlbm + sizeof(handle_tlbm));
|
|
|
+#ifdef CONFIG_MIPS_PGD_C0_CONTEXT
|
|
|
+ local_flush_icache_range((unsigned long)tlbmiss_handler_setup_pgd_array,
|
|
|
+ (unsigned long)tlbmiss_handler_setup_pgd_array + sizeof(handle_tlbm));
|
|
|
+#endif
|
|
|
+}
|
|
|
+
|
|
|
void __cpuinit build_tlb_refill_handler(void)
|
|
|
{
|
|
|
/*
|
|
@@ -2213,6 +2227,7 @@ void __cpuinit build_tlb_refill_handler(void)
|
|
|
build_r3000_tlb_load_handler();
|
|
|
build_r3000_tlb_store_handler();
|
|
|
build_r3000_tlb_modify_handler();
|
|
|
+ flush_tlb_handlers();
|
|
|
run_once++;
|
|
|
}
|
|
|
#else
|
|
@@ -2240,23 +2255,10 @@ void __cpuinit build_tlb_refill_handler(void)
|
|
|
build_r4000_tlb_modify_handler();
|
|
|
if (!cpu_has_local_ebase)
|
|
|
build_r4000_tlb_refill_handler();
|
|
|
+ flush_tlb_handlers();
|
|
|
run_once++;
|
|
|
}
|
|
|
if (cpu_has_local_ebase)
|
|
|
build_r4000_tlb_refill_handler();
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-void __cpuinit flush_tlb_handlers(void)
|
|
|
-{
|
|
|
- local_flush_icache_range((unsigned long)handle_tlbl,
|
|
|
- (unsigned long)handle_tlbl + sizeof(handle_tlbl));
|
|
|
- local_flush_icache_range((unsigned long)handle_tlbs,
|
|
|
- (unsigned long)handle_tlbs + sizeof(handle_tlbs));
|
|
|
- local_flush_icache_range((unsigned long)handle_tlbm,
|
|
|
- (unsigned long)handle_tlbm + sizeof(handle_tlbm));
|
|
|
-#ifdef CONFIG_MIPS_PGD_C0_CONTEXT
|
|
|
- local_flush_icache_range((unsigned long)tlbmiss_handler_setup_pgd_array,
|
|
|
- (unsigned long)tlbmiss_handler_setup_pgd_array + sizeof(handle_tlbm));
|
|
|
-#endif
|
|
|
-}
|