aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/include/asm/pgtable-3level_types.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/include/asm/pgtable-3level_types.h')
-rw-r--r--arch/x86/include/asm/pgtable-3level_types.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/arch/x86/include/asm/pgtable-3level_types.h b/arch/x86/include/asm/pgtable-3level_types.h
new file mode 100644
index 00000000000..1bd5876c864
--- /dev/null
+++ b/arch/x86/include/asm/pgtable-3level_types.h
@@ -0,0 +1,48 @@
1#ifndef _ASM_X86_PGTABLE_3LEVEL_DEFS_H
2#define _ASM_X86_PGTABLE_3LEVEL_DEFS_H
3
4#ifndef __ASSEMBLY__
5#include <linux/types.h>
6
7typedef u64 pteval_t;
8typedef u64 pmdval_t;
9typedef u64 pudval_t;
10typedef u64 pgdval_t;
11typedef u64 pgprotval_t;
12
13typedef union {
14 struct {
15 unsigned long pte_low, pte_high;
16 };
17 pteval_t pte;
18} pte_t;
19#endif /* !__ASSEMBLY__ */
20
21#ifdef CONFIG_PARAVIRT
22#define SHARED_KERNEL_PMD (pv_info.shared_kernel_pmd)
23#else
24#define SHARED_KERNEL_PMD 1
25#endif
26
27#define PAGETABLE_LEVELS 3
28
29/*
30 * PGDIR_SHIFT determines what a top-level page table entry can map
31 */
32#define PGDIR_SHIFT 30
33#define PTRS_PER_PGD 4
34
35/*
36 * PMD_SHIFT determines the size of the area a middle-level
37 * page table can map
38 */
39#define PMD_SHIFT 21
40#define PTRS_PER_PMD 512
41
42/*
43 * entries per page directory level
44 */
45#define PTRS_PER_PTE 512
46
47
48#endif /* _ASM_X86_PGTABLE_3LEVEL_DEFS_H */