we need to locate the FSP Info Header before the stack is initialized to
access the cfg region for any UPD. Hence adding the
AsmGetFspInfoHeaderNoStack function to support it.

Note: This function is there in IntelFspPkg but got removed in IntelFsp2Pkg

Cc: Maurice Ma <[email protected]>
Cc: Jiewen Yao <[email protected]>
Cc: Giri P Mudusuru <[email protected]>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Satya Yarlagadda <[email protected]>
---
 IntelFsp2Pkg/FspSecCore/Ia32/FspHelper.nasm | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/IntelFsp2Pkg/FspSecCore/Ia32/FspHelper.nasm 
b/IntelFsp2Pkg/FspSecCore/Ia32/FspHelper.nasm
index 43eac97..a848dcb 100644
--- a/IntelFsp2Pkg/FspSecCore/Ia32/FspHelper.nasm
+++ b/IntelFsp2Pkg/FspSecCore/Ia32/FspHelper.nasm
@@ -14,6 +14,8 @@
     SECTION .text
 
 global ASM_PFX(FspInfoHeaderRelativeOff)
+ASM_PFX(FspInfoHeaderRelativeOff):
+   DD    0x12345678               ; This value must be patched by the build 
script
 
 global ASM_PFX(AsmGetFspBaseAddress)
 ASM_PFX(AsmGetFspBaseAddress):
@@ -29,6 +31,11 @@ ASM_PFX(NextInstruction):
    pop   eax
    sub   eax, ASM_PFX(NextInstruction)
    add   eax, ASM_PFX(AsmGetFspInfoHeader)
-   DB    02Dh                                               ; opcode of sub 
eax, imm32
-ASM_PFX(FspInfoHeaderRelativeOff):    DD    0x12345678      ; sub eax, 
FspInfoHeaderRelativeOff
+   sub   eax, dword [ASM_PFX(FspInfoHeaderRelativeOff)]
    ret
+
+global ASM_PFX(AsmGetFspInfoHeaderNoStack)
+ASM_PFX(AsmGetFspInfoHeaderNoStack):
+   mov   eax, ASM_PFX(AsmGetFspInfoHeader)
+   sub   eax, dword [ASM_PFX(FspInfoHeaderRelativeOff)]
+   jmp   edi
-- 
2.9.2.windows.1

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to