1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef __ASM_SH_TLBFLUSH_H 3*4882a593Smuzhiyun #define __ASM_SH_TLBFLUSH_H 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun /* 6*4882a593Smuzhiyun * TLB flushing: 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * - flush_tlb_all() flushes all processes TLBs 9*4882a593Smuzhiyun * - flush_tlb_mm(mm) flushes the specified mm context TLB's 10*4882a593Smuzhiyun * - flush_tlb_page(vma, vmaddr) flushes one page 11*4882a593Smuzhiyun * - flush_tlb_range(vma, start, end) flushes a range of pages 12*4882a593Smuzhiyun * - flush_tlb_kernel_range(start, end) flushes a range of kernel pages 13*4882a593Smuzhiyun */ 14*4882a593Smuzhiyun extern void local_flush_tlb_all(void); 15*4882a593Smuzhiyun extern void local_flush_tlb_mm(struct mm_struct *mm); 16*4882a593Smuzhiyun extern void local_flush_tlb_range(struct vm_area_struct *vma, 17*4882a593Smuzhiyun unsigned long start, 18*4882a593Smuzhiyun unsigned long end); 19*4882a593Smuzhiyun extern void local_flush_tlb_page(struct vm_area_struct *vma, 20*4882a593Smuzhiyun unsigned long page); 21*4882a593Smuzhiyun extern void local_flush_tlb_kernel_range(unsigned long start, 22*4882a593Smuzhiyun unsigned long end); 23*4882a593Smuzhiyun extern void local_flush_tlb_one(unsigned long asid, unsigned long page); 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun extern void __flush_tlb_global(void); 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun #ifdef CONFIG_SMP 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun extern void flush_tlb_all(void); 30*4882a593Smuzhiyun extern void flush_tlb_mm(struct mm_struct *mm); 31*4882a593Smuzhiyun extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, 32*4882a593Smuzhiyun unsigned long end); 33*4882a593Smuzhiyun extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long page); 34*4882a593Smuzhiyun extern void flush_tlb_kernel_range(unsigned long start, unsigned long end); 35*4882a593Smuzhiyun extern void flush_tlb_one(unsigned long asid, unsigned long page); 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun #else 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun #define flush_tlb_all() local_flush_tlb_all() 40*4882a593Smuzhiyun #define flush_tlb_mm(mm) local_flush_tlb_mm(mm) 41*4882a593Smuzhiyun #define flush_tlb_page(vma, page) local_flush_tlb_page(vma, page) 42*4882a593Smuzhiyun #define flush_tlb_one(asid, page) local_flush_tlb_one(asid, page) 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun #define flush_tlb_range(vma, start, end) \ 45*4882a593Smuzhiyun local_flush_tlb_range(vma, start, end) 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun #define flush_tlb_kernel_range(start, end) \ 48*4882a593Smuzhiyun local_flush_tlb_kernel_range(start, end) 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun #endif /* CONFIG_SMP */ 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun #endif /* __ASM_SH_TLBFLUSH_H */ 53