1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2b924a281SJeremy Fitzhardinge #ifndef _ASM_X86_PGTABLE_3LEVEL_DEFS_H 3b924a281SJeremy Fitzhardinge #define _ASM_X86_PGTABLE_3LEVEL_DEFS_H 4b924a281SJeremy Fitzhardinge 554321d94SJeremy Fitzhardinge #ifndef __ASSEMBLY__ 654321d94SJeremy Fitzhardinge #include <linux/types.h> 754321d94SJeremy Fitzhardinge 854321d94SJeremy Fitzhardinge typedef u64 pteval_t; 954321d94SJeremy Fitzhardinge typedef u64 pmdval_t; 1054321d94SJeremy Fitzhardinge typedef u64 pudval_t; 11fe1e8c3eSKirill A. Shutemov typedef u64 p4dval_t; 1254321d94SJeremy Fitzhardinge typedef u64 pgdval_t; 1354321d94SJeremy Fitzhardinge typedef u64 pgprotval_t; 1454321d94SJeremy Fitzhardinge 1554321d94SJeremy Fitzhardinge typedef union { 1654321d94SJeremy Fitzhardinge struct { 1754321d94SJeremy Fitzhardinge unsigned long pte_low, pte_high; 1854321d94SJeremy Fitzhardinge }; 1954321d94SJeremy Fitzhardinge pteval_t pte; 2054321d94SJeremy Fitzhardinge } pte_t; 21*fbfdec99SPeter Zijlstra 22*fbfdec99SPeter Zijlstra typedef union { 23*fbfdec99SPeter Zijlstra struct { 24*fbfdec99SPeter Zijlstra unsigned long pmd_low, pmd_high; 25*fbfdec99SPeter Zijlstra }; 26*fbfdec99SPeter Zijlstra pmdval_t pmd; 27*fbfdec99SPeter Zijlstra } pmd_t; 2854321d94SJeremy Fitzhardinge #endif /* !__ASSEMBLY__ */ 2954321d94SJeremy Fitzhardinge 307ffcf149SJoerg Roedel #define SHARED_KERNEL_PMD (!static_cpu_has(X86_FEATURE_PTI)) 31b924a281SJeremy Fitzhardinge 3286cf69f1SJoerg Roedel #define ARCH_PAGE_TABLE_SYNC_MASK (SHARED_KERNEL_PMD ? 0 : PGTBL_PMD_MODIFIED) 3386cf69f1SJoerg Roedel 34b924a281SJeremy Fitzhardinge /* 35b924a281SJeremy Fitzhardinge * PGDIR_SHIFT determines what a top-level page table entry can map 36b924a281SJeremy Fitzhardinge */ 37b924a281SJeremy Fitzhardinge #define PGDIR_SHIFT 30 38b924a281SJeremy Fitzhardinge #define PTRS_PER_PGD 4 39b924a281SJeremy Fitzhardinge 40b924a281SJeremy Fitzhardinge /* 41b924a281SJeremy Fitzhardinge * PMD_SHIFT determines the size of the area a middle-level 42b924a281SJeremy Fitzhardinge * page table can map 43b924a281SJeremy Fitzhardinge */ 44b924a281SJeremy Fitzhardinge #define PMD_SHIFT 21 45b924a281SJeremy Fitzhardinge #define PTRS_PER_PMD 512 46b924a281SJeremy Fitzhardinge 47b924a281SJeremy Fitzhardinge /* 48b924a281SJeremy Fitzhardinge * entries per page directory level 49b924a281SJeremy Fitzhardinge */ 50b924a281SJeremy Fitzhardinge #define PTRS_PER_PTE 512 51b924a281SJeremy Fitzhardinge 5202390b87SKirill A. Shutemov #define MAX_POSSIBLE_PHYSMEM_BITS 36 5376e258adSJoerg Roedel #define PGD_KERNEL_START (CONFIG_PAGE_OFFSET >> PGDIR_SHIFT) 5454321d94SJeremy Fitzhardinge 55b924a281SJeremy Fitzhardinge #endif /* _ASM_X86_PGTABLE_3LEVEL_DEFS_H */ 56