aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/mm/c-r4k.c
diff options
context:
space:
mode:
authorMarkos Chandras <markos.chandras@imgtec.com>2014-01-16 08:11:08 -0500
committerRalf Baechle <ralf@linux-mips.org>2014-03-26 18:09:19 -0400
commit80ca69f40f26fb016e6d863b48fe1a1abdae8840 (patch)
tree71ac70b50989cddd650961852e6dcf4e3d44a070 /arch/mips/mm/c-r4k.c
parent4caa906ee949b7002cc1558bbe3744fbed188d1c (diff)
MIPS: mm: c-r4k: Add support for flushing user pages from cache
Use the userspace cache flushing functions if the interrupted process is a userspace one. Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Diffstat (limited to 'arch/mips/mm/c-r4k.c')
-rw-r--r--arch/mips/mm/c-r4k.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c
index 6332a9e84f01..9b223e07f784 100644
--- a/arch/mips/mm/c-r4k.c
+++ b/arch/mips/mm/c-r4k.c
@@ -562,7 +562,8 @@ static inline void local_r4k_flush_cache_page(void *args)
562 } 562 }
563 563
564 if (cpu_has_dc_aliases || (exec && !cpu_has_ic_fills_f_dc)) { 564 if (cpu_has_dc_aliases || (exec && !cpu_has_ic_fills_f_dc)) {
565 r4k_blast_dcache_page(addr); 565 vaddr ? r4k_blast_dcache_page(addr) :
566 r4k_blast_dcache_user_page(addr);
566 if (exec && !cpu_icache_snoops_remote_store) 567 if (exec && !cpu_icache_snoops_remote_store)
567 r4k_blast_scache_page(addr); 568 r4k_blast_scache_page(addr);
568 } 569 }
@@ -573,7 +574,8 @@ static inline void local_r4k_flush_cache_page(void *args)
573 if (cpu_context(cpu, mm) != 0) 574 if (cpu_context(cpu, mm) != 0)
574 drop_mmu_context(mm, cpu); 575 drop_mmu_context(mm, cpu);
575 } else 576 } else
576 r4k_blast_icache_page(addr); 577 vaddr ? r4k_blast_icache_page(addr) :
578 r4k_blast_icache_user_page(addr);
577 } 579 }
578 580
579 if (vaddr) { 581 if (vaddr) {