From: Yarlagadda, Satya P Date: Mon, 1 Aug 2016 11:41:34 +0000 (+0800) Subject: IntelFsp2Pkg: Locate FSP Info Header dynamically X-Git-Tag: edk2-stable201903~6163 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=8265373e60ad79acd4a20affe2c49470c68d6a9c;hp=d54e2d6c1e68f2edfa06a6a331e808f109df779f IntelFsp2Pkg: Locate FSP Info Header dynamically we need to locate the FSP Info Header by calculating offset dynamically to handle the scenario of FSP component is being rebased to different location. Cc: Maurice Ma Cc: Jiewen Yao Cc: Giri P Mudusuru Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Satya Yarlagadda Reviewed-by: Maurice Ma Reviewed-by: Jiewen Yao Reviewed-by: Giri P Mudusuru --- diff --git a/IntelFsp2Pkg/FspSecCore/Ia32/FspHelper.nasm b/IntelFsp2Pkg/FspSecCore/Ia32/FspHelper.nasm index 00e953b4f1..43eac973a2 100644 --- a/IntelFsp2Pkg/FspSecCore/Ia32/FspHelper.nasm +++ b/IntelFsp2Pkg/FspSecCore/Ia32/FspHelper.nasm @@ -14,22 +14,21 @@ SECTION .text global ASM_PFX(FspInfoHeaderRelativeOff) -ASM_PFX(FspInfoHeaderRelativeOff): - ; - ; This value will be pached by the build script - ; - DD 0x12345678 global ASM_PFX(AsmGetFspBaseAddress) ASM_PFX(AsmGetFspBaseAddress): - mov eax, ASM_PFX(AsmGetFspInfoHeader) - sub eax, dword [ASM_PFX(FspInfoHeaderRelativeOff)] + call ASM_PFX(AsmGetFspInfoHeader) add eax, 0x1C mov eax, dword [eax] ret global ASM_PFX(AsmGetFspInfoHeader) ASM_PFX(AsmGetFspInfoHeader): - mov eax, ASM_PFX(AsmGetFspInfoHeader) - sub eax, dword [ASM_PFX(FspInfoHeaderRelativeOff)] + call ASM_PFX(NextInstruction) +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 ret