diff options
Diffstat (limited to 'include/asm-parisc/tlbflush.h')
-rw-r--r-- | include/asm-parisc/tlbflush.h | 30 |
1 files changed, 4 insertions, 26 deletions
diff --git a/include/asm-parisc/tlbflush.h b/include/asm-parisc/tlbflush.h index 67b3814a71dd..ae2d12008546 100644 --- a/include/asm-parisc/tlbflush.h +++ b/include/asm-parisc/tlbflush.h | |||
@@ -71,33 +71,11 @@ static inline void flush_tlb_page(struct vm_area_struct *vma, | |||
71 | purge_tlb_end(); | 71 | purge_tlb_end(); |
72 | } | 72 | } |
73 | 73 | ||
74 | static inline void flush_tlb_range(struct vm_area_struct *vma, | 74 | void __flush_tlb_range(unsigned long sid, |
75 | unsigned long start, unsigned long end) | 75 | unsigned long start, unsigned long end); |
76 | { | ||
77 | unsigned long npages; | ||
78 | 76 | ||
79 | npages = ((end - (start & PAGE_MASK)) + (PAGE_SIZE - 1)) >> PAGE_SHIFT; | 77 | #define flush_tlb_range(vma,start,end) __flush_tlb_range((vma)->vm_mm->context,start,end) |
80 | if (npages >= 512) /* 2MB of space: arbitrary, should be tuned */ | ||
81 | flush_tlb_all(); | ||
82 | else { | ||
83 | mtsp(vma->vm_mm->context,1); | ||
84 | purge_tlb_start(); | ||
85 | if (split_tlb) { | ||
86 | while (npages--) { | ||
87 | pdtlb(start); | ||
88 | pitlb(start); | ||
89 | start += PAGE_SIZE; | ||
90 | } | ||
91 | } else { | ||
92 | while (npages--) { | ||
93 | pdtlb(start); | ||
94 | start += PAGE_SIZE; | ||
95 | } | ||
96 | } | ||
97 | purge_tlb_end(); | ||
98 | } | ||
99 | } | ||
100 | 78 | ||
101 | #define flush_tlb_kernel_range(start, end) flush_tlb_all() | 79 | #define flush_tlb_kernel_range(start, end) __flush_tlb_range(0,start,end) |
102 | 80 | ||
103 | #endif | 81 | #endif |