|
64 | 64 | #define EARLY_KASLR (0)
|
65 | 65 | #endif
|
66 | 66 |
|
67 |
| -#define EARLY_ENTRIES(vstart, vend, shift) \ |
68 |
| - ((((vend) - 1) >> (shift)) - ((vstart) >> (shift)) + 1 + EARLY_KASLR) |
| 67 | +#define EARLY_ENTRIES(vstart, vend, shift, add) \ |
| 68 | + ((((vend) - 1) >> (shift)) - ((vstart) >> (shift)) + 1 + add) |
69 | 69 |
|
70 |
| -#define EARLY_PGDS(vstart, vend) (EARLY_ENTRIES(vstart, vend, PGDIR_SHIFT)) |
| 70 | +#define EARLY_PGDS(vstart, vend, add) (EARLY_ENTRIES(vstart, vend, PGDIR_SHIFT, add)) |
71 | 71 |
|
72 | 72 | #if SWAPPER_PGTABLE_LEVELS > 3
|
73 |
| -#define EARLY_PUDS(vstart, vend) (EARLY_ENTRIES(vstart, vend, PUD_SHIFT)) |
| 73 | +#define EARLY_PUDS(vstart, vend, add) (EARLY_ENTRIES(vstart, vend, PUD_SHIFT, add)) |
74 | 74 | #else
|
75 |
| -#define EARLY_PUDS(vstart, vend) (0) |
| 75 | +#define EARLY_PUDS(vstart, vend, add) (0) |
76 | 76 | #endif
|
77 | 77 |
|
78 | 78 | #if SWAPPER_PGTABLE_LEVELS > 2
|
79 |
| -#define EARLY_PMDS(vstart, vend) (EARLY_ENTRIES(vstart, vend, SWAPPER_TABLE_SHIFT)) |
| 79 | +#define EARLY_PMDS(vstart, vend, add) (EARLY_ENTRIES(vstart, vend, SWAPPER_TABLE_SHIFT, add)) |
80 | 80 | #else
|
81 |
| -#define EARLY_PMDS(vstart, vend) (0) |
| 81 | +#define EARLY_PMDS(vstart, vend, add) (0) |
82 | 82 | #endif
|
83 | 83 |
|
84 |
| -#define EARLY_PAGES(vstart, vend) ( 1 /* PGDIR page */ \ |
85 |
| - + EARLY_PGDS((vstart), (vend)) /* each PGDIR needs a next level page table */ \ |
86 |
| - + EARLY_PUDS((vstart), (vend)) /* each PUD needs a next level page table */ \ |
87 |
| - + EARLY_PMDS((vstart), (vend))) /* each PMD needs a next level page table */ |
88 |
| -#define INIT_DIR_SIZE (PAGE_SIZE * EARLY_PAGES(KIMAGE_VADDR, _end)) |
| 84 | +#define EARLY_PAGES(vstart, vend, add) ( 1 /* PGDIR page */ \ |
| 85 | + + EARLY_PGDS((vstart), (vend), add) /* each PGDIR needs a next level page table */ \ |
| 86 | + + EARLY_PUDS((vstart), (vend), add) /* each PUD needs a next level page table */ \ |
| 87 | + + EARLY_PMDS((vstart), (vend), add)) /* each PMD needs a next level page table */ |
| 88 | +#define INIT_DIR_SIZE (PAGE_SIZE * EARLY_PAGES(KIMAGE_VADDR, _end, EARLY_KASLR)) |
89 | 89 |
|
90 | 90 | /* the initial ID map may need two extra pages if it needs to be extended */
|
91 | 91 | #if VA_BITS < 48
|
92 | 92 | #define INIT_IDMAP_DIR_SIZE ((INIT_IDMAP_DIR_PAGES + 2) * PAGE_SIZE)
|
93 | 93 | #else
|
94 | 94 | #define INIT_IDMAP_DIR_SIZE (INIT_IDMAP_DIR_PAGES * PAGE_SIZE)
|
95 | 95 | #endif
|
96 |
| -#define INIT_IDMAP_DIR_PAGES EARLY_PAGES(KIMAGE_VADDR, _end + MAX_FDT_SIZE + SWAPPER_BLOCK_SIZE) |
| 96 | +#define INIT_IDMAP_DIR_PAGES EARLY_PAGES(KIMAGE_VADDR, _end + MAX_FDT_SIZE + SWAPPER_BLOCK_SIZE, 1) |
97 | 97 |
|
98 | 98 | /* Initial memory map size */
|
99 | 99 | #if ARM64_KERNEL_USES_PMD_MAPS
|
|
0 commit comments