diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/mips/mm/c-r4k.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c index 0138cb2e456d..df04a315d830 100644 --- a/arch/mips/mm/c-r4k.c +++ b/arch/mips/mm/c-r4k.c | |||
@@ -381,17 +381,21 @@ static inline void local_r4k_flush_cache_mm(void * args) | |||
381 | if (!cpu_context(smp_processor_id(), mm)) | 381 | if (!cpu_context(smp_processor_id(), mm)) |
382 | return; | 382 | return; |
383 | 383 | ||
384 | r4k_blast_dcache(); | ||
385 | |||
386 | /* | 384 | /* |
387 | * Kludge alert. For obscure reasons R4000SC and R4400SC go nuts if we | 385 | * Kludge alert. For obscure reasons R4000SC and R4400SC go nuts if we |
388 | * only flush the primary caches but R10000 and R12000 behave sane ... | 386 | * only flush the primary caches but R10000 and R12000 behave sane ... |
387 | * R4000SC and R4400SC indexed S-cache ops also invalidate primary | ||
388 | * caches, so we can bail out early. | ||
389 | */ | 389 | */ |
390 | if (current_cpu_data.cputype == CPU_R4000SC || | 390 | if (current_cpu_data.cputype == CPU_R4000SC || |
391 | current_cpu_data.cputype == CPU_R4000MC || | 391 | current_cpu_data.cputype == CPU_R4000MC || |
392 | current_cpu_data.cputype == CPU_R4400SC || | 392 | current_cpu_data.cputype == CPU_R4400SC || |
393 | current_cpu_data.cputype == CPU_R4400MC) | 393 | current_cpu_data.cputype == CPU_R4400MC) { |
394 | r4k_blast_scache(); | 394 | r4k_blast_scache(); |
395 | return; | ||
396 | } | ||
397 | |||
398 | r4k_blast_dcache(); | ||
395 | } | 399 | } |
396 | 400 | ||
397 | static void r4k_flush_cache_mm(struct mm_struct *mm) | 401 | static void r4k_flush_cache_mm(struct mm_struct *mm) |