1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _ASM_POWERPC_NOHASH_TLBFLUSH_H 3 #define _ASM_POWERPC_NOHASH_TLBFLUSH_H 4 5 /* 6 * TLB flushing: 7 * 8 * - flush_tlb_mm(mm) flushes the specified mm context TLB's 9 * - flush_tlb_page(vma, vmaddr) flushes one page 10 * - local_flush_tlb_mm(mm, full) flushes the specified mm context on 11 * the local processor 12 * - local_flush_tlb_page(vma, vmaddr) flushes one page on the local processor 13 * - flush_tlb_range(vma, start, end) flushes a range of pages 14 * - flush_tlb_kernel_range(start, end) flushes a range of kernel pages 15 * 16 */ 17 18 /* 19 * TLB flushing for software loaded TLB chips 20 * 21 * TODO: (CONFIG_FSL_BOOKE) determine if flush_tlb_range & 22 * flush_tlb_kernel_range are best implemented as tlbia vs 23 * specific tlbie's 24 */ 25 26 struct vm_area_struct; 27 struct mm_struct; 28 29 #define MMU_NO_CONTEXT ((unsigned int)-1) 30 31 extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, 32 unsigned long end); 33 extern void flush_tlb_kernel_range(unsigned long start, unsigned long end); 34 35 extern void local_flush_tlb_mm(struct mm_struct *mm); 36 extern void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr); 37 38 extern void __local_flush_tlb_page(struct mm_struct *mm, unsigned long vmaddr, 39 int tsize, int ind); 40 41 #ifdef CONFIG_SMP 42 extern void flush_tlb_mm(struct mm_struct *mm); 43 extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr); 44 extern void __flush_tlb_page(struct mm_struct *mm, unsigned long vmaddr, 45 int tsize, int ind); 46 #else 47 #define flush_tlb_mm(mm) local_flush_tlb_mm(mm) 48 #define flush_tlb_page(vma,addr) local_flush_tlb_page(vma,addr) 49 #define __flush_tlb_page(mm,addr,p,i) __local_flush_tlb_page(mm,addr,p,i) 50 #endif 51 52 #endif /* _ASM_POWERPC_NOHASH_TLBFLUSH_H */ 53