Line data Source code
1 : #ifndef _ASM_X86_PGTABLE_64_DEFS_H
2 : #define _ASM_X86_PGTABLE_64_DEFS_H
3 :
4 : #ifndef __ASSEMBLY__
5 : #include <linux/types.h>
6 :
7 : /*
8 : * These are used to make use of C type-checking..
9 : */
10 : typedef unsigned long pteval_t;
11 : typedef unsigned long pmdval_t;
12 : typedef unsigned long pudval_t;
13 1 : typedef unsigned long pgdval_t;
14 1 : typedef unsigned long pgprotval_t;
15 :
16 : typedef struct { pteval_t pte; } pte_t;
17 :
18 1 : #endif /* !__ASSEMBLY__ */
19 :
20 : #define SHARED_KERNEL_PMD 0
21 : #define PAGETABLE_LEVELS 4
22 :
23 : /*
24 : * PGDIR_SHIFT determines what a top-level page table entry can map
25 : */
26 : #define PGDIR_SHIFT 39
27 : #define PTRS_PER_PGD 512
28 :
29 : /*
30 : * 3rd level page
31 : */
32 : #define PUD_SHIFT 30
33 : #define PTRS_PER_PUD 512
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 : #define PMD_SIZE (_AC(1, UL) << PMD_SHIFT)
48 : #define PMD_MASK (~(PMD_SIZE - 1))
49 : #define PUD_SIZE (_AC(1, UL) << PUD_SHIFT)
50 : #define PUD_MASK (~(PUD_SIZE - 1))
51 : #define PGDIR_SIZE (_AC(1, UL) << PGDIR_SHIFT)
52 : #define PGDIR_MASK (~(PGDIR_SIZE - 1))
53 :
54 : /* See Documentation/x86/x86_64/mm.txt for a description of the memory map. */
55 : #define MAXMEM _AC(__AC(1, UL) << MAX_PHYSMEM_BITS, UL)
56 : #define VMALLOC_START _AC(0xffffc90000000000, UL)
57 : #define VMALLOC_END _AC(0xffffe8ffffffffff, UL)
58 : #define VMEMMAP_START _AC(0xffffea0000000000, UL)
59 : #define MODULES_VADDR _AC(0xffffffffa0000000, UL)
60 : #define MODULES_END _AC(0xffffffffff000000, UL)
61 : #define MODULES_LEN (MODULES_END - MODULES_VADDR)
62 :
63 : #endif /* _ASM_X86_PGTABLE_64_DEFS_H */
|