]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Sec/X64/SecEntry.nasm
OvmfPkg/Sec: Move TDX APs related nasm code to IntelTdxAPs.nasm
[mirror_edk2.git] / OvmfPkg / Sec / X64 / SecEntry.nasm
index 4528fec309a092ad42720c451cec58745deb8b88..0f82051720dae39ff25b9b98f58f3a63b7b3fd56 100644 (file)
@@ -10,7 +10,6 @@
 ;------------------------------------------------------------------------------\r
 \r
 #include <Base.h>\r
-%include "TdxCommondefs.inc"\r
 \r
 DEFAULT REL\r
 SECTION .text\r
@@ -49,6 +48,7 @@ ASM_PFX(_ModuleEntryPoint):
     cmp     byte[eax], VM_GUEST_TYPE_TDX\r
     jne     InitStack\r
 \r
+    %define TDCALL_TDINFO         1\r
     mov     rax, TDCALL_TDINFO\r
     tdcall\r
 \r
@@ -62,7 +62,9 @@ ASM_PFX(_ModuleEntryPoint):
     mov     rax, r9\r
     and     rax, 0xffff\r
     test    rax, rax\r
-    jne     ParkAp\r
+    jz      InitStack\r
+    mov     rsp, FixedPcdGet32 (PcdOvmfSecGhcbBackupBase)\r
+    jmp     ParkAp\r
 \r
 InitStack:\r
 \r
@@ -98,54 +100,4 @@ InitStack:
     sub     rsp, 0x20\r
     call    ASM_PFX(SecCoreStartupWithStack)\r
 \r
-    ;\r
-    ; Note: BSP never gets here. APs will be unblocked by DXE\r
-    ;\r
-    ; R8  [31:0]  NUM_VCPUS\r
-    ;     [63:32] MAX_VCPUS\r
-    ; R9  [31:0]  VCPU_INDEX\r
-    ;\r
-ParkAp:\r
-\r
-    mov     rbp,  r9\r
-\r
-.do_wait_loop:\r
-    mov     rsp, FixedPcdGet32 (PcdOvmfSecGhcbBackupBase)\r
-\r
-    ;\r
-    ; register itself in [rsp + CpuArrivalOffset]\r
-    ;\r
-    mov       rax, 1\r
-    lock xadd dword [rsp + CpuArrivalOffset], eax\r
-    inc       eax\r
-\r
-.check_arrival_cnt:\r
-    cmp       eax, r8d\r
-    je        .check_command\r
-    mov       eax, dword[rsp + CpuArrivalOffset]\r
-    jmp       .check_arrival_cnt\r
-\r
-.check_command:\r
-    mov     eax, dword[rsp + CommandOffset]\r
-    cmp     eax, MpProtectedModeWakeupCommandNoop\r
-    je      .check_command\r
-\r
-    cmp     eax, MpProtectedModeWakeupCommandWakeup\r
-    je      .do_wakeup\r
-\r
-    ; Don't support this command, so ignore\r
-    jmp     .check_command\r
-\r
-.do_wakeup:\r
-    ;\r
-    ; BSP sets these variables before unblocking APs\r
-    ;   RAX:  WakeupVectorOffset\r
-    ;   RBX:  Relocated mailbox address\r
-    ;   RBP:  vCpuId\r
-    ;\r
-    mov     rax, 0\r
-    mov     eax, dword[rsp + WakeupVectorOffset]\r
-    mov     rbx, [rsp + WakeupArgsRelocatedMailBox]\r
-    nop\r
-    jmp     rax\r
-    jmp     $\r
+%include "../../IntelTdx/Sec/X64/IntelTdxAPs.nasm"\r