Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
1a472c9d AK |
2 | #ifndef _ASM_POWERPC_TLBFLUSH_RADIX_H |
3 | #define _ASM_POWERPC_TLBFLUSH_RADIX_H | |
4 | ||
5 | struct vm_area_struct; | |
6 | struct mm_struct; | |
7 | struct mmu_gather; | |
8 | ||
9 | static inline int mmu_get_ap(int psize) | |
10 | { | |
11 | return mmu_psize_defs[psize].ap; | |
12 | } | |
13 | ||
015eb1b8 | 14 | #ifdef CONFIG_PPC_RADIX_MMU |
d4748276 | 15 | extern void radix__tlbiel_all(unsigned int action); |
015eb1b8 ME |
16 | #else |
17 | static inline void radix__tlbiel_all(unsigned int action) { WARN_ON(1); }; | |
18 | #endif | |
d4748276 | 19 | |
5491ae7b AK |
20 | extern void radix__flush_hugetlb_tlb_range(struct vm_area_struct *vma, |
21 | unsigned long start, unsigned long end); | |
8cb8140c AK |
22 | extern void radix__flush_tlb_range_psize(struct mm_struct *mm, unsigned long start, |
23 | unsigned long end, int psize); | |
d8e91e93 AK |
24 | extern void radix__flush_pmd_tlb_range(struct vm_area_struct *vma, |
25 | unsigned long start, unsigned long end); | |
1a472c9d AK |
26 | extern void radix__flush_tlb_range(struct vm_area_struct *vma, unsigned long start, |
27 | unsigned long end); | |
28 | extern void radix__flush_tlb_kernel_range(unsigned long start, unsigned long end); | |
29 | ||
30 | extern void radix__local_flush_tlb_mm(struct mm_struct *mm); | |
6110236b | 31 | extern void radix__local_flush_all_mm(struct mm_struct *mm); |
1a472c9d | 32 | extern void radix__local_flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr); |
f22dfc91 | 33 | extern void radix__local_flush_tlb_page_psize(struct mm_struct *mm, unsigned long vmaddr, |
fbfa26d8 | 34 | int psize); |
1a472c9d AK |
35 | extern void radix__tlb_flush(struct mmu_gather *tlb); |
36 | #ifdef CONFIG_SMP | |
37 | extern void radix__flush_tlb_mm(struct mm_struct *mm); | |
6110236b | 38 | extern void radix__flush_all_mm(struct mm_struct *mm); |
1a472c9d | 39 | extern void radix__flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr); |
f22dfc91 | 40 | extern void radix__flush_tlb_page_psize(struct mm_struct *mm, unsigned long vmaddr, |
fbfa26d8 | 41 | int psize); |
1a472c9d AK |
42 | #else |
43 | #define radix__flush_tlb_mm(mm) radix__local_flush_tlb_mm(mm) | |
6110236b | 44 | #define radix__flush_all_mm(mm) radix__local_flush_all_mm(mm) |
1a472c9d | 45 | #define radix__flush_tlb_page(vma,addr) radix__local_flush_tlb_page(vma,addr) |
f22dfc91 | 46 | #define radix__flush_tlb_page_psize(mm,addr,p) radix__local_flush_tlb_page_psize(mm,addr,p) |
1a472c9d | 47 | #endif |
a46cc7a9 | 48 | extern void radix__flush_tlb_pwc(struct mmu_gather *tlb, unsigned long addr); |
424de9c6 | 49 | extern void radix__flush_tlb_collapsed_pmd(struct mm_struct *mm, unsigned long addr); |
be34d300 | 50 | extern void radix__flush_tlb_all(void); |
d4748276 | 51 | |
0078778a NP |
52 | extern void radix__flush_tlb_lpid_page(unsigned int lpid, |
53 | unsigned long addr, | |
54 | unsigned long page_size); | |
55 | extern void radix__flush_pwc_lpid(unsigned int lpid); | |
fd10be25 | 56 | extern void radix__flush_tlb_lpid(unsigned int lpid); |
0078778a NP |
57 | extern void radix__local_flush_tlb_lpid(unsigned int lpid); |
58 | extern void radix__local_flush_tlb_lpid_guest(unsigned int lpid); | |
59 | ||
1a472c9d | 60 | #endif |