1 #ifndef _ASM_POWERPC_BOOK3S_64_PGTABLE_64K_H 2 #define _ASM_POWERPC_BOOK3S_64_PGTABLE_64K_H 3 4 #ifndef __ASSEMBLY__ 5 #ifdef CONFIG_HUGETLB_PAGE 6 /* 7 * We have PGD_INDEX_SIZ = 12 and PTE_INDEX_SIZE = 8, so that we can have 8 * 16GB hugepage pte in PGD and 16MB hugepage pte at PMD; 9 * 10 * Defined in such a way that we can optimize away code block at build time 11 * if CONFIG_HUGETLB_PAGE=n. 12 */ 13 static inline int pmd_huge(pmd_t pmd) 14 { 15 /* 16 * leaf pte for huge page 17 */ 18 return !!(pmd_raw(pmd) & cpu_to_be64(_PAGE_PTE)); 19 } 20 21 static inline int pud_huge(pud_t pud) 22 { 23 /* 24 * leaf pte for huge page 25 */ 26 return !!(pud_raw(pud) & cpu_to_be64(_PAGE_PTE)); 27 } 28 29 static inline int pgd_huge(pgd_t pgd) 30 { 31 /* 32 * leaf pte for huge page 33 */ 34 return !!(pgd_raw(pgd) & cpu_to_be64(_PAGE_PTE)); 35 } 36 #define pgd_huge pgd_huge 37 38 #ifdef CONFIG_DEBUG_VM 39 extern int hugepd_ok(hugepd_t hpd); 40 #define is_hugepd(hpd) (hugepd_ok(hpd)) 41 #else 42 /* 43 * With 64k page size, we have hugepage ptes in the pgd and pmd entries. We don't 44 * need to setup hugepage directory for them. Our pte and page directory format 45 * enable us to have this enabled. 46 */ 47 static inline int hugepd_ok(hugepd_t hpd) 48 { 49 return 0; 50 } 51 #define is_hugepd(pdep) 0 52 #endif /* CONFIG_DEBUG_VM */ 53 54 #endif /* CONFIG_HUGETLB_PAGE */ 55 56 static inline int remap_4k_pfn(struct vm_area_struct *vma, unsigned long addr, 57 unsigned long pfn, pgprot_t prot) 58 { 59 if (radix_enabled()) 60 BUG(); 61 return hash__remap_4k_pfn(vma, addr, pfn, prot); 62 } 63 #endif /* __ASSEMBLY__ */ 64 #endif /*_ASM_POWERPC_BOOK3S_64_PGTABLE_64K_H */ 65