Warning: This file is not a C or C++ file. It does not have highlighting.
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
---|---|
2 | #ifndef _ASM_X86_PGTABLE_3LEVEL_DEFS_H |
3 | #define _ASM_X86_PGTABLE_3LEVEL_DEFS_H |
4 | |
5 | #ifndef __ASSEMBLY__ |
6 | #include <linux/types.h> |
7 | |
8 | typedef u64 pteval_t; |
9 | typedef u64 pmdval_t; |
10 | typedef u64 pudval_t; |
11 | typedef u64 p4dval_t; |
12 | typedef u64 pgdval_t; |
13 | typedef u64 pgprotval_t; |
14 | |
15 | typedef union { |
16 | struct { |
17 | unsigned long pte_low, pte_high; |
18 | }; |
19 | pteval_t pte; |
20 | } pte_t; |
21 | |
22 | typedef union { |
23 | struct { |
24 | unsigned long pmd_low, pmd_high; |
25 | }; |
26 | pmdval_t pmd; |
27 | } pmd_t; |
28 | #endif /* !__ASSEMBLY__ */ |
29 | |
30 | #define SHARED_KERNEL_PMD (!static_cpu_has(X86_FEATURE_PTI)) |
31 | |
32 | #define ARCH_PAGE_TABLE_SYNC_MASK (SHARED_KERNEL_PMD ? 0 : PGTBL_PMD_MODIFIED) |
33 | |
34 | /* |
35 | * PGDIR_SHIFT determines what a top-level page table entry can map |
36 | */ |
37 | #define PGDIR_SHIFT 30 |
38 | #define PTRS_PER_PGD 4 |
39 | |
40 | /* |
41 | * PMD_SHIFT determines the size of the area a middle-level |
42 | * page table can map |
43 | */ |
44 | #define PMD_SHIFT 21 |
45 | #define PTRS_PER_PMD 512 |
46 | |
47 | /* |
48 | * entries per page directory level |
49 | */ |
50 | #define PTRS_PER_PTE 512 |
51 | |
52 | #define MAX_POSSIBLE_PHYSMEM_BITS 36 |
53 | #define PGD_KERNEL_START (CONFIG_PAGE_OFFSET >> PGDIR_SHIFT) |
54 | |
55 | #endif /* _ASM_X86_PGTABLE_3LEVEL_DEFS_H */ |
56 |
Warning: This file is not a C or C++ file. It does not have highlighting.