tlbflush.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
  4. */
  5. #ifndef __ASM_ARC_TLBFLUSH__
  6. #define __ASM_ARC_TLBFLUSH__
  7. #include <linux/mm.h>
  8. void local_flush_tlb_all(void);
  9. void local_flush_tlb_mm(struct mm_struct *mm);
  10. void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page);
  11. void local_flush_tlb_kernel_range(unsigned long start, unsigned long end);
  12. void local_flush_tlb_range(struct vm_area_struct *vma,
  13. unsigned long start, unsigned long end);
  14. #ifdef CONFIG_TRANSPARENT_HUGEPAGE
  15. void local_flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start,
  16. unsigned long end);
  17. #endif
  18. #ifndef CONFIG_SMP
  19. #define flush_tlb_range(vma, s, e) local_flush_tlb_range(vma, s, e)
  20. #define flush_tlb_page(vma, page) local_flush_tlb_page(vma, page)
  21. #define flush_tlb_kernel_range(s, e) local_flush_tlb_kernel_range(s, e)
  22. #define flush_tlb_all() local_flush_tlb_all()
  23. #define flush_tlb_mm(mm) local_flush_tlb_mm(mm)
  24. #ifdef CONFIG_TRANSPARENT_HUGEPAGE
  25. #define flush_pmd_tlb_range(vma, s, e) local_flush_pmd_tlb_range(vma, s, e)
  26. #endif
  27. #else
  28. extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
  29. unsigned long end);
  30. extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long page);
  31. extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
  32. extern void flush_tlb_all(void);
  33. extern void flush_tlb_mm(struct mm_struct *mm);
  34. #ifdef CONFIG_TRANSPARENT_HUGEPAGE
  35. extern void flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end);
  36. #endif
  37. #endif /* CONFIG_SMP */
  38. #endif