aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/parisc/include/asm/tlbflush.h5
-rw-r--r--arch/parisc/kernel/cache.c2
2 files changed, 4 insertions, 3 deletions
diff --git a/arch/parisc/include/asm/tlbflush.h b/arch/parisc/include/asm/tlbflush.h
index 5273da991e06..9d086a599fa0 100644
--- a/arch/parisc/include/asm/tlbflush.h
+++ b/arch/parisc/include/asm/tlbflush.h
@@ -63,13 +63,14 @@ static inline void flush_tlb_mm(struct mm_struct *mm)
63static inline void flush_tlb_page(struct vm_area_struct *vma, 63static inline void flush_tlb_page(struct vm_area_struct *vma,
64 unsigned long addr) 64 unsigned long addr)
65{ 65{
66 unsigned long flags; 66 unsigned long flags, sid;
67 67
68 /* For one page, it's not worth testing the split_tlb variable */ 68 /* For one page, it's not worth testing the split_tlb variable */
69 69
70 mb(); 70 mb();
71 mtsp(vma->vm_mm->context,1); 71 sid = vma->vm_mm->context;
72 purge_tlb_start(flags); 72 purge_tlb_start(flags);
73 mtsp(sid, 1);
73 pdtlb(addr); 74 pdtlb(addr);
74 pitlb(addr); 75 pitlb(addr);
75 purge_tlb_end(flags); 76 purge_tlb_end(flags);
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
index 65fb4cbc3a0f..2e65aa54bd10 100644
--- a/arch/parisc/kernel/cache.c
+++ b/arch/parisc/kernel/cache.c
@@ -440,8 +440,8 @@ void __flush_tlb_range(unsigned long sid, unsigned long start,
440 else { 440 else {
441 unsigned long flags; 441 unsigned long flags;
442 442
443 mtsp(sid, 1);
444 purge_tlb_start(flags); 443 purge_tlb_start(flags);
444 mtsp(sid, 1);
445 if (split_tlb) { 445 if (split_tlb) {
446 while (npages--) { 446 while (npages--) {
447 pdtlb(start); 447 pdtlb(start);