]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFspPkg/FspSecCore/Ia32/FspApiEntry.asm
Fix FSP GCC error on FspApiCallingCheck().
[mirror_edk2.git] / IntelFspPkg / FspSecCore / Ia32 / FspApiEntry.asm
index 01b0bfab313e694e0825c2e3ee787b93c23d1214..a0c9b1ed7351a5911310283cc9e0560472a733ba 100644 (file)
@@ -37,9 +37,10 @@ EXTERN   FspApiCallingCheck:PROC
 ;\r
 ; Following functions will be provided in PlatformSecLib\r
 ;\r
-EXTERN   GetFspBaseAddress:PROC\r
+EXTERN   AsmGetFspBaseAddress:PROC\r
+EXTERN   AsmGetFspInfoHeader:PROC\r
 EXTERN   GetBootFirmwareVolumeOffset:PROC\r
-EXTERN   Pei2LoaderSwitchStack:PROC\r
+EXTERN   Loader2PeiSwitchStack:PROC\r
 EXTERN   LoadMicrocode(LoadMicrocodeDefault):PROC\r
 EXTERN   SecPlatformInit(SecPlatformInitDefault):PROC\r
 EXTERN   SecCarInit:PROC\r
@@ -370,8 +371,7 @@ TempRamInitApi   PROC    NEAR    PUBLIC
   jz        NemInitExit\r
 \r
   ;\r
-  ; CPUID/DeviceID check\r
-  ; and Sec Platform Init\r
+  ; Sec Platform Init\r
   ;\r
   CALL_MMX  SecPlatformInit\r
   cmp       eax, 0\r
@@ -489,8 +489,8 @@ FspApiCommon   PROC C PUBLIC
   ; Verify the calling condition\r
   ;\r
   pushad\r
-  push   [esp + 4 * 8 + 4]\r
-  push   eax\r
+  push   [esp + 4 * 8 + 4]  ; push ApiParam\r
+  push   eax                ; push ApiIdx\r
   call   FspApiCallingCheck\r
   add    esp, 8\r
   cmp    eax, 0\r
@@ -505,7 +505,9 @@ FspApiCommon   PROC C PUBLIC
   jz     @F\r
   cmp    eax, 3   ; FspMemoryInit API\r
   jz     @F\r
-  jmp    Pei2LoaderSwitchStack\r
+\r
+  call   AsmGetFspInfoHeader\r
+  jmp    Loader2PeiSwitchStack\r
 \r
 @@:\r
   ;\r
@@ -513,9 +515,17 @@ FspApiCommon   PROC C PUBLIC
   ;\r
   \r
   ;\r
-  ; Store the address in FSP which will return control to the BL\r
+  ; Place holder to store the FspInfoHeader pointer\r
+  ;\r
+  push   eax\r
+\r
+  ;\r
+  ; Update the FspInfoHeader pointer\r
   ;\r
-  push   offset exit\r
+  push   eax\r
+  call   AsmGetFspInfoHeader\r
+  mov    [esp + 4], eax\r
+  pop    eax\r
 \r
   ;\r
   ; Create a Task Frame in the stack for the Boot Loader\r
@@ -549,7 +559,7 @@ FspApiCommon   PROC C PUBLIC
   ;\r
   ; Pass entry point of the PEI core\r
   ;\r
-  call    GetFspBaseAddress\r
+  call    AsmGetFspBaseAddress\r
   mov     edi, eax\r
   add     edi, PcdGet32 (PcdFspAreaSize) \r
   sub     edi, 20h\r
@@ -563,7 +573,7 @@ FspApiCommon   PROC C PUBLIC
   ; PcdFspAreaBaseAddress are the same. For FSP with mulitple FVs,\r
   ; they are different. The code below can handle both cases.\r
   ;\r
-  call    GetFspBaseAddress\r
+  call    AsmGetFspBaseAddress\r
   mov     edi, eax\r
   call    GetBootFirmwareVolumeOffset\r
   add     eax, edi\r
@@ -582,7 +592,7 @@ FspApiCommon   PROC C PUBLIC
   ; Pass Control into the PEI Core\r
   ;\r
   call    SecStartup\r
-\r
+  add     esp, 4\r
 exit:\r
   ret\r
 \r