• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /* SPDX-License-Identifier: GPL-2.0 */
2  #ifndef _CRIS_TLBFLUSH_H
3  #define _CRIS_TLBFLUSH_H
4  
5  #include <linux/mm.h>
6  #include <asm/processor.h>
7  #include <asm/pgtable.h>
8  #include <asm/pgalloc.h>
9  
10  /*
11   * TLB flushing (implemented in arch/cris/mm/tlb.c):
12   *
13   *  - flush_tlb() flushes the current mm struct TLBs
14   *  - flush_tlb_all() flushes all processes TLBs
15   *  - flush_tlb_mm(mm) flushes the specified mm context TLB's
16   *  - flush_tlb_page(vma, vmaddr) flushes one page
17   *  - flush_tlb_range(mm, start, end) flushes a range of pages
18   *
19   */
20  
21  extern void __flush_tlb_all(void);
22  extern void __flush_tlb_mm(struct mm_struct *mm);
23  extern void __flush_tlb_page(struct vm_area_struct *vma,
24  			   unsigned long addr);
25  
26  #define flush_tlb_all __flush_tlb_all
27  #define flush_tlb_mm __flush_tlb_mm
28  #define flush_tlb_page __flush_tlb_page
29  
flush_tlb_range(struct vm_area_struct * vma,unsigned long start,unsigned long end)30  static inline void flush_tlb_range(struct vm_area_struct * vma, unsigned long start, unsigned long end)
31  {
32  	flush_tlb_mm(vma->vm_mm);
33  }
34  
flush_tlb(void)35  static inline void flush_tlb(void)
36  {
37  	flush_tlb_mm(current->mm);
38  }
39  
40  #define flush_tlb_kernel_range(start, end) flush_tlb_all()
41  
42  #endif /* _CRIS_TLBFLUSH_H */
43