|
@@ -36,7 +36,14 @@ static inline void local_flush_tlb_page(unsigned long addr)
|
|
|
|
|
|
#define flush_tlb_all() local_flush_tlb_all()
|
|
|
#define flush_tlb_page(vma, addr) local_flush_tlb_page(addr)
|
|
|
-#define flush_tlb_range(vma, start, end) local_flush_tlb_all()
|
|
|
+
|
|
|
+static inline void flush_tlb_range(struct vm_area_struct *vma,
|
|
|
+ unsigned long start, unsigned long end)
|
|
|
+{
|
|
|
+ local_flush_tlb_all();
|
|
|
+}
|
|
|
+
|
|
|
+#define flush_tlb_mm(mm) flush_tlb_all()
|
|
|
|
|
|
#else /* CONFIG_SMP */
|
|
|
|
|
@@ -45,16 +52,13 @@ static inline void local_flush_tlb_page(unsigned long addr)
|
|
|
#define flush_tlb_all() sbi_remote_sfence_vma(0, 0, -1)
|
|
|
#define flush_tlb_page(vma, addr) flush_tlb_range(vma, addr, 0)
|
|
|
#define flush_tlb_range(vma, start, end) \
|
|
|
- sbi_remote_sfence_vma(0, start, (end) - (start))
|
|
|
+ sbi_remote_sfence_vma(mm_cpumask((vma)->vm_mm)->bits, \
|
|
|
+ start, (end) - (start))
|
|
|
+#define flush_tlb_mm(mm) \
|
|
|
+ sbi_remote_sfence_vma(mm_cpumask(mm)->bits, 0, -1)
|
|
|
|
|
|
#endif /* CONFIG_SMP */
|
|
|
|
|
|
-/* Flush the TLB entries of the specified mm context */
|
|
|
-static inline void flush_tlb_mm(struct mm_struct *mm)
|
|
|
-{
|
|
|
- flush_tlb_all();
|
|
|
-}
|
|
|
-
|
|
|
/* Flush a range of kernel pages */
|
|
|
static inline void flush_tlb_kernel_range(unsigned long start,
|
|
|
unsigned long end)
|