0001
0002
0003
0004
0005
0006 #ifndef __ASM_ARC_TLBFLUSH__
0007 #define __ASM_ARC_TLBFLUSH__
0008
0009 #include <linux/mm.h>
0010
0011 void local_flush_tlb_all(void);
0012 void local_flush_tlb_mm(struct mm_struct *mm);
0013 void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page);
0014 void local_flush_tlb_kernel_range(unsigned long start, unsigned long end);
0015 void local_flush_tlb_range(struct vm_area_struct *vma,
0016 unsigned long start, unsigned long end);
0017 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
0018 void local_flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start,
0019 unsigned long end);
0020 #endif
0021
0022 #ifndef CONFIG_SMP
0023 #define flush_tlb_range(vma, s, e) local_flush_tlb_range(vma, s, e)
0024 #define flush_tlb_page(vma, page) local_flush_tlb_page(vma, page)
0025 #define flush_tlb_kernel_range(s, e) local_flush_tlb_kernel_range(s, e)
0026 #define flush_tlb_all() local_flush_tlb_all()
0027 #define flush_tlb_mm(mm) local_flush_tlb_mm(mm)
0028 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
0029 #define flush_pmd_tlb_range(vma, s, e) local_flush_pmd_tlb_range(vma, s, e)
0030 #endif
0031 #else
0032 extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
0033 unsigned long end);
0034 extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long page);
0035 extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
0036 extern void flush_tlb_all(void);
0037 extern void flush_tlb_mm(struct mm_struct *mm);
0038 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
0039 extern void flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end);
0040 #endif
0041 #endif
0042 #endif