[edk2-devel] [PATCH 5/6] UefiCpuPkg/ResetVector: Add Main32 entry point in Main.asm
Min Xu
min.m.xu at intel.com
Mon Jul 12 01:19:41 UTC 2021
RFC: https://bugzilla.tianocore.org/show_bug.cgi?id=3429
In Tdx all CPUs "reset" to run on 32-bit protected mode with flat
descriptor (paging disabled). Main32 entry point is added in
UefiCpuPkg/ResetVector/Vtf0/Main.asm so that Main.asm can support
the 32-bit protected mode.
InitTdx.asm and ReloadFlat32.asm are added in Vtf0/Vtf0.nasmb as well.
Cc: Eric Dong <eric.dong at intel.com>
Cc: Ray Ni <ray.ni at intel.com>
Cc: Jiewen Yao <jiewen.yao at intel.com>
Cc: Laszlo Ersek <lersek at redhat.com>
Signed-off-by: Min Xu <min.m.xu at intel.com>
---
UefiCpuPkg/ResetVector/Vtf0/Main.asm | 45 ++++++++++++++++++++++++++
UefiCpuPkg/ResetVector/Vtf0/Vtf0.nasmb | 2 ++
2 files changed, 47 insertions(+)
diff --git a/UefiCpuPkg/ResetVector/Vtf0/Main.asm b/UefiCpuPkg/ResetVector/Vtf0/Main.asm
index 19d08482f831..90e1dc678233 100644
--- a/UefiCpuPkg/ResetVector/Vtf0/Main.asm
+++ b/UefiCpuPkg/ResetVector/Vtf0/Main.asm
@@ -36,6 +36,51 @@ Main16:
BITS 32
+%ifdef ARCH_X64
+
+ jmp SearchBfv
+
+;
+; Modified: EBX, ECX, EDX, EBP, EDI, ESP
+;
+; @param[in,out] RAX/EAX 0
+; @param[in] RFLAGS 2
+; @param[in] RCX [31:0] TDINITVP - Untrusted Configuration
+; [63:32] 0
+; @param[in] RDX [31:0] VCPUID
+; [63:32] 0
+; @param[in] RBX [6:0] CPU supported GPA width
+; [7:7] 5 level page table support
+; [63:8] 0
+; @param[in] RSI [31:0] VCPU_Index
+; [63:32] 0
+; @param[in] RDI/EDI 0
+; @param[in] RBP/EBP 0
+; @param[in] R8 Same as RCX
+; @param[out] RBP/EBP Address of Boot Firmware Volume (BFV)
+; @param[out] DS Selector allowing flat access to all addresses
+; @param[out] ES Selector allowing flat access to all addresses
+; @param[out] FS Selector allowing flat access to all addresses
+; @param[out] GS Selector allowing flat access to all addresses
+; @param[out] SS Selector allowing flat access to all addresses
+;
+; @return None This routine jumps to SEC and does not return
+Main32:
+ ;
+ ; Save EBX in EBP because EBX will be changed in ReloadFlat32
+ ;
+ mov ebp, ebx
+
+ OneTimeCall ReloadFlat32
+
+ ;
+ ; Init Tdx
+ ;
+ OneTimeCall InitTdx
+
+%endif
+
+SearchBfv:
;
; Search for the Boot Firmware Volume (BFV)
;
diff --git a/UefiCpuPkg/ResetVector/Vtf0/Vtf0.nasmb b/UefiCpuPkg/ResetVector/Vtf0/Vtf0.nasmb
index 493738c79c1c..663d6ddc4d24 100644
--- a/UefiCpuPkg/ResetVector/Vtf0/Vtf0.nasmb
+++ b/UefiCpuPkg/ResetVector/Vtf0/Vtf0.nasmb
@@ -51,6 +51,8 @@
%include "Ia32/SearchForSecEntry.asm"
%ifdef ARCH_X64
+%include "Ia32/InitTdx.asm"
+%include "Ia32/ReloadFlat32.asm"
%include "Ia32/Flat32ToFlat64.asm"
%include "Ia32/PageTables64.asm"
%endif
--
2.29.2.windows.2
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#77680): https://edk2.groups.io/g/devel/message/77680
Mute This Topic: https://groups.io/mt/84144143/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list