Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
bee8b3b5 AK |
2 | #ifndef _ASM_POWERPC_BOOK3S_64_HUGETLB_H |
3 | #define _ASM_POWERPC_BOOK3S_64_HUGETLB_H | |
48483760 AK |
4 | /* |
5 | * For radix we want generic code to handle hugetlb. But then if we want | |
6 | * both hash and radix to be enabled together we need to workaround the | |
7 | * limitations. | |
8 | */ | |
9 | void radix__flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr); | |
10 | void radix__local_flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr); | |
11 | extern unsigned long | |
12 | radix__hugetlb_get_unmapped_area(struct file *file, unsigned long addr, | |
13 | unsigned long len, unsigned long pgoff, | |
14 | unsigned long flags); | |
fbfa26d8 AK |
15 | |
16 | static inline int hstate_get_psize(struct hstate *hstate) | |
17 | { | |
18 | unsigned long shift; | |
19 | ||
20 | shift = huge_page_shift(hstate); | |
21 | if (shift == mmu_psize_defs[MMU_PAGE_2M].shift) | |
22 | return MMU_PAGE_2M; | |
23 | else if (shift == mmu_psize_defs[MMU_PAGE_1G].shift) | |
24 | return MMU_PAGE_1G; | |
ccf17c8b AK |
25 | else if (shift == mmu_psize_defs[MMU_PAGE_16M].shift) |
26 | return MMU_PAGE_16M; | |
27 | else if (shift == mmu_psize_defs[MMU_PAGE_16G].shift) | |
28 | return MMU_PAGE_16G; | |
fbfa26d8 AK |
29 | else { |
30 | WARN(1, "Wrong huge page shift\n"); | |
31 | return mmu_virtual_psize; | |
32 | } | |
33 | } | |
049d567a | 34 | |
40692eb5 AK |
35 | #ifdef CONFIG_ARCH_HAS_GIGANTIC_PAGE |
36 | static inline bool gigantic_page_supported(void) | |
37 | { | |
4ae279c2 | 38 | return true; |
40692eb5 AK |
39 | } |
40 | #endif | |
41 | ||
f1981b5b AK |
42 | /* hugepd entry valid bit */ |
43 | #define HUGEPD_VAL_BITS (0x8000000000000000UL) | |
44 | ||
48483760 | 45 | #endif |