From: Waldemar Kozaczuk <
jwkoz...@gmail.com>
Committer: Waldemar Kozaczuk <
jwkoz...@gmail.com>
Branch: master
arm on firecracker: map first 6GB one-to-one during early boot
Unlike QEMU, firecracker loads OSv kernel at 0x80080000 (slightly above 4GB).
This patch extends early boot mapping from 0-4GB to 0-6GB to allow OSv kernel
execute properly if linked with kernel_base set to 0x80080000 on firecracker.
Signed-off-by: Waldemar Kozaczuk <
jwkoz...@gmail.com>
---
diff --git a/arch/aarch64/boot.S b/arch/aarch64/boot.S
--- a/arch/aarch64/boot.S
+++ b/arch/aarch64/boot.S
@@ -188,16 +188,17 @@ ident_pt_l4_ttbr0:
.quad 0
.endr
ident_pt_l3_ttbr0:
- .quad ident_pt_l2_0_ttbr0 + 0x3
- .quad ident_pt_l2_1_ttbr0 + 0x3
- .rept 510
+ .quad ident_pt_l2_0_ttbr0 + 0x3 // Map 0GB-2GB one-to-one
+ .quad ident_pt_l2_1_ttbr0 + 0x3 // Map 2GB-4GB one-to-one
+ .quad ident_pt_l2_2_ttbr0 + 0x3 // Map 4GB-6GB one-to-one
+ .rept 509
.quad 0
.endr
ident_pt_l2_0_ttbr0:
index = 0
offset = 0x00000000
.rept 512
- .quad (index << 21) + 0x401
+ .quad offset + (index << 21) + 0x411
index = index + 1
.endr
ident_pt_l2_1_ttbr0:
@@ -207,6 +208,13 @@ ident_pt_l2_1_ttbr0:
.quad offset + (index << 21) + 0x411
index = index + 1
.endr
+ident_pt_l2_2_ttbr0:
+ index = 0
+ offset = 0x80000000
+ .rept 512
+ .quad offset + (index << 21) + 0x411
+ index = index + 1
+ .endr
.align 12
ident_pt_l4_ttbr1:
.rept 512