File tree Expand file tree Collapse file tree 2 files changed +20
-1
lines changed Expand file tree Collapse file tree 2 files changed +20
-1
lines changed Original file line number Diff line number Diff line change 75
75
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaSize
76
76
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase
77
77
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize
78
+ gEfiMdeModulePkgTokenSpaceGuid.PcdUse5LevelPageTable
Original file line number Diff line number Diff line change @@ -25,8 +25,13 @@ STACK_TOP:
25
25
SECTION .text
26
26
27
27
%define TDX_WORK_AREA_MAILBOX_GDTR (FixedPcdGet32 (PcdOvmfWorkAreaBase) + 128 )
28
+ %define PT_ADDR(Offset) (FixedPcdGet32 (PcdOvmfSecPageTablesBase) + (Offset))
29
+ %define TDX_WORK_AREA_PGTBL_READY (FixedPcdGet32 (PcdOvmfWorkAreaBase) + 4 )
30
+ %define PG_5_LEVEL (FixedPcdGetBool (PcdUse5LevelPageTable))
28
31
29
- %define PT_ADDR(Offset) (FixedPcdGet32 (PcdOvmfSecPageTablesBase) + (Offset))
32
+ %define TDX_BSP 1
33
+ %define TDX_AP 2
34
+ %define TDX_AP_5_LEVEL 3
30
35
31
36
BITS 64
32
37
@@ -174,6 +179,19 @@ RestoreCr0:
174
179
RestoreCr4:
175
180
mov eax , 0x40
176
181
mov cr4 , eax
182
+
183
+ %if PG_5_LEVEL
184
+ mov al , byte [ TDX_WORK_AREA_PGTBL_READY ]
185
+ inc eax
186
+ cmp eax , TDX_AP_5_LEVEL
187
+ jne SetCr3
188
+ SetCr4La57:
189
+ ; set la57 bit in cr4
190
+ mov eax , cr4
191
+ bts eax , 12
192
+ mov cr4 , eax
193
+ %endif
194
+
177
195
SetCr3:
178
196
;
179
197
; Can use the boot page tables since it's reserved
You can’t perform that action at this time.
0 commit comments