Fsp1.1 update.
[mirror_edk2.git] / IntelFspPkg / FspSecCore / Ia32 / FspApiEntry.asm
index 6c33083..7c6e60f 100644 (file)
@@ -41,9 +41,8 @@ EXTERN   GetFspBaseAddress:PROC
 EXTERN   GetBootFirmwareVolumeOffset:PROC\r
 EXTERN   Pei2LoaderSwitchStack:PROC\r
 EXTERN   FspSelfCheck(FspSelfCheckDflt):PROC\r
-EXTERN   PlatformBasicInit(PlatformBasicInitDflt):PROC\r
 EXTERN   LoadUcode(LoadUcodeDflt):PROC\r
-EXTERN   SecPlatformInit:PROC\r
+EXTERN   SecPlatformInit(SecPlatformInitDflt):PROC\r
 EXTERN   SecCarInit:PROC\r
 \r
 ;\r
@@ -101,7 +100,7 @@ exit:
 FspSelfCheckDflt   ENDP\r
 \r
 ;------------------------------------------------------------------------------\r
-PlatformBasicInitDflt PROC NEAR PUBLIC\r
+SecPlatformInitDflt PROC NEAR PUBLIC\r
    ; Inputs:\r
    ;   eax -> Return address\r
    ; Outputs:\r
@@ -116,7 +115,7 @@ PlatformBasicInitDflt PROC NEAR PUBLIC
    xor   eax, eax\r
 exit:\r
    jmp   ebp\r
-PlatformBasicInitDflt   ENDP\r
+SecPlatformInitDflt   ENDP\r
 \r
 ;------------------------------------------------------------------------------\r
 LoadUcodeDflt   PROC  NEAR PUBLIC\r
@@ -304,7 +303,6 @@ exit:
 LoadUcodeDflt   ENDP\r
 \r
 EstablishStackFsp    PROC    NEAR    PRIVATE\r
-  ; Following is the code copied from BYTFSP, need to figure out what it is doing..\r
   ;\r
   ; Save parameter pointer in edx  \r
   ;\r
@@ -336,9 +334,9 @@ InvalidMicrocodeRegion:
   ;\r
   push      DATA_LEN_OF_PER0     ; Size of the data region \r
   push      30524550h            ; Signature of the  data region 'PER0'\r
-  movd      eax, xmm4\r
-  push      eax\r
-  movd      eax, xmm5\r
+  LOAD_EDX\r
+  push      edx\r
+  LOAD_EAX\r
   push      eax\r
   rdtsc\r
   push      edx\r
@@ -387,9 +385,17 @@ TempRamInitApi   PROC    NEAR    PUBLIC
   ; Save timestamp into XMM4 & XMM5\r
   ;\r
   rdtsc\r
-  movd      xmm4, edx\r
-  movd      xmm5, eax\r
-  \r
+  SAVE_EAX\r
+  SAVE_EDX\r
+\r
+  ;\r
+  ; Check Parameter\r
+  ;\r
+  mov       eax, dword ptr [esp + 4]\r
+  cmp       eax, 0\r
+  mov       eax, 80000002h\r
+  jz        NemInitExit\r
+\r
   ;\r
   ; CPUID/DeviceID check\r
   ;\r
@@ -400,16 +406,22 @@ TempRamInitApi   PROC    NEAR    PUBLIC
   jnz       NemInitExit\r
 \r
   CALL_MMX  SecPlatformInit\r
-\r
-  ; Call Sec CAR Init\r
-  CALL_MMX  SecCarInit\r
+  cmp       eax, 0\r
+  jnz       NemInitExit\r
   \r
-  ; @todo: ESP has been modified, we need to restore here.\r
-  LOAD_REGS\r
-  SAVE_REGS\r
   ; Load microcode\r
+  LOAD_ESP\r
   CALL_MMX  LoadUcode\r
+  cmp       eax, 0\r
+  jnz       NemInitExit\r
+\r
+  ; Call Sec CAR Init\r
+  LOAD_ESP\r
+  CALL_MMX  SecCarInit\r
+  cmp       eax, 0\r
+  jnz       NemInitExit\r
 \r
+  LOAD_ESP\r
   CALL_MMX  EstablishStackFsp\r
 \r
 NemInitExit:\r