Skip to content

Commit 5109752

Browse files
committed
ResetVector: remove 5-level paging
5-level paging is not necessary in td-shim, remove the related code and page table entry in reset vector. As the level 5 entry is removed, update the size of `ResetVector` in image layout. Signed-off-by: Jiaqi Gao <[email protected]>
1 parent 51833bd commit 5109752

File tree

4 files changed

+9
-30
lines changed

4 files changed

+9
-30
lines changed

devtools/td-layout-config/config_image.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@
55
"TempHeap": "0x020000",
66
"Metadata": "0x001000",
77
"Payload": "0xC2D000",
8-
"Ipl": "0x349000",
9-
"ResetVector": "0x008000"
8+
"Ipl": "0x34A000",
9+
"ResetVector": "0x007000"
1010
}

td-layout/src/build_time.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ Image Layout
2121
+----------------------------------------+ <- 0xCAE000
2222
| METADATA | (0x1000) 4 kB
2323
+----------------------------------------+ <- 0xCAF000
24-
| IPL | (0x349000) 3.29 MB
25-
+----------------------------------------+ <- 0xFF8000
26-
| RESET_VECTOR | (0x8000) 32 kB
24+
| IPL | (0x34A000) 3.29 MB
25+
+----------------------------------------+ <- 0xFF9000
26+
| RESET_VECTOR | (0x7000) 28 kB
2727
+----------------------------------------+ <- 0x1000000
2828
Image size: 0x1000000 (16 MB)
2929
*/
@@ -52,10 +52,10 @@ pub const TD_SHIM_METADATA_OFFSET: u32 = 0xCAE000;
5252
pub const TD_SHIM_METADATA_SIZE: u32 = 0x1000; // 4 kB
5353

5454
pub const TD_SHIM_IPL_OFFSET: u32 = 0xCAF000;
55-
pub const TD_SHIM_IPL_SIZE: u32 = 0x349000; // 3.29 MB
55+
pub const TD_SHIM_IPL_SIZE: u32 = 0x34A000; // 3.29 MB
5656

57-
pub const TD_SHIM_RESET_VECTOR_OFFSET: u32 = 0xFF8000;
58-
pub const TD_SHIM_RESET_VECTOR_SIZE: u32 = 0x8000; // 32 kB
57+
pub const TD_SHIM_RESET_VECTOR_OFFSET: u32 = 0xFF9000;
58+
pub const TD_SHIM_RESET_VECTOR_SIZE: u32 = 0x7000; // 28 kB
5959

6060
// Offset when Loading into Memory
6161
pub const TD_SHIM_FIRMWARE_BASE: u32 = 0xFF000000;
@@ -75,4 +75,4 @@ pub const TD_SHIM_FREE_BASE: u32 = 0xFF081000;
7575
pub const TD_SHIM_PAYLOAD_BASE: u32 = 0xFF081000;
7676
pub const TD_SHIM_METADATA_BASE: u32 = 0xFFCAE000;
7777
pub const TD_SHIM_IPL_BASE: u32 = 0xFFCAF000;
78-
pub const TD_SHIM_RESET_VECTOR_BASE: u32 = 0xFFFF8000;
78+
pub const TD_SHIM_RESET_VECTOR_BASE: u32 = 0xFFFF9000;

td-shim/ResetVector/Ia32/Flat32ToFlat64.asm

-19
Original file line numberDiff line numberDiff line change
@@ -16,29 +16,10 @@ Transition32FlatTo64Flat:
1616

1717
mov eax, cr4
1818
bts eax, 5 ; enable PAE
19-
20-
;
21-
; esp [6:0] holds gpaw, if it is at least 52 bits, need to set
22-
; LA57 and use 5-level paging
23-
;
24-
mov ecx, esp
25-
and ecx, 0x2f
26-
cmp ecx, 52
27-
jl .set_cr4
28-
bts eax, 12
29-
.set_cr4:
3019
mov cr4, eax
3120

3221
mov ecx, ADDR_OF(TopLevelPageDirectory)
33-
;
34-
; if we just set la57, we are ok, if using 4-level paging, adjust top-level page directory
35-
;
36-
bt eax, 12
37-
jc .set_cr3
38-
add ecx, 0x1000
39-
.set_cr3:
4022
mov cr3, ecx
41-
4223
mov eax, cr0
4324
bts eax, 31 ; set PG
4425
mov cr0, eax ; enable paging

td-shim/ResetVector/X64/PageTables.asm

-2
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,9 @@ TopLevelPageDirectory:
2727
TIMES 511 DQ 0
2828

2929
DQ PDP(0x2000)
30-
TIMES 511 DQ 0
3130
DQ PDP(0x3000)
3231
DQ PDP(0x4000)
3332
DQ PDP(0x5000)
34-
DQ PDP(0x6000)
3533

3634
;
3735
; Page Table Entries (2048 * 2MB entries => 4GB)

0 commit comments

Comments
 (0)