|
@@ -73,7 +73,11 @@ startup_64:
|
|
|
addq %rbp, init_level4_pgt + (511*8)(%rip)
|
|
|
|
|
|
addq %rbp, level3_ident_pgt + 0(%rip)
|
|
|
+
|
|
|
addq %rbp, level3_kernel_pgt + (510*8)(%rip)
|
|
|
+ addq %rbp, level3_kernel_pgt + (511*8)(%rip)
|
|
|
+
|
|
|
+ addq %rbp, level2_fixmap_pgt + (506*8)(%rip)
|
|
|
|
|
|
/* Add an Identity mapping if I am above 1G */
|
|
|
leaq _text(%rip), %rdi
|
|
@@ -314,7 +318,16 @@ NEXT_PAGE(level3_kernel_pgt)
|
|
|
.fill 510,8,0
|
|
|
/* (2^48-(2*1024*1024*1024)-((2^39)*511))/(2^30) = 510 */
|
|
|
.quad level2_kernel_pgt - __START_KERNEL_map + _KERNPG_TABLE
|
|
|
- .fill 1,8,0
|
|
|
+ .quad level2_fixmap_pgt - __START_KERNEL_map + _PAGE_TABLE
|
|
|
+
|
|
|
+NEXT_PAGE(level2_fixmap_pgt)
|
|
|
+ .fill 506,8,0
|
|
|
+ .quad level1_fixmap_pgt - __START_KERNEL_map + _PAGE_TABLE
|
|
|
+ /* 8MB reserved for vsyscalls + a 2MB hole = 4 + 1 entries */
|
|
|
+ .fill 5,8,0
|
|
|
+
|
|
|
+NEXT_PAGE(level1_fixmap_pgt)
|
|
|
+ .fill 512,8,0
|
|
|
|
|
|
NEXT_PAGE(level2_ident_pgt)
|
|
|
/* Since I easily can, map the first 1G.
|