From 3b17b2458726bf7e2cf640d29ebe14f8af587905 Mon Sep 17 00:00:00 2001 From: "Ma, Maurice" Date: Wed, 29 Apr 2015 03:10:24 +0000 Subject: Add dual FSP binaries support. There are two FSP images at different locations in a flash (one factory version is read only and other in updatable version) TempRamInit, FspMemoryInit and TempRamExit are executed from factory version and FspSiliconInit/NotifyPhase will be executed from updatable version. Also update FSP specification version to v1.1. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: "Ma, Maurice" Reviewed-by: "Yao, Jiewen" git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17248 6f19259b-4bc3-4df7-8a09-765794883524 --- IntelFspPkg/Library/BaseFspCommonLib/FspCommonLib.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'IntelFspPkg/Library/BaseFspCommonLib') diff --git a/IntelFspPkg/Library/BaseFspCommonLib/FspCommonLib.c b/IntelFspPkg/Library/BaseFspCommonLib/FspCommonLib.c index f80dff1a56..7de84a0a7e 100644 --- a/IntelFspPkg/Library/BaseFspCommonLib/FspCommonLib.c +++ b/IntelFspPkg/Library/BaseFspCommonLib/FspCommonLib.c @@ -27,7 +27,7 @@ // API Parameter +0x34 // API return address +0x30 // -// push offset exit +0x2C +// push FspInfoHeader +0x2C // pushfd +0x28 // cli // pushad +0x24 @@ -47,7 +47,7 @@ typedef struct { UINT32 Ecx; UINT32 Eax; UINT16 Flags[2]; - UINT32 ExitOff; + UINT32 FspInfoHeader; UINT32 ApiRet; UINT32 ApiParam; } CONTEXT_STACK; @@ -331,6 +331,23 @@ GetFspInfoHeader ( return GetFspGlobalDataPointer()->FspInfoHeader; } +/** + This function gets the FSP info header pointer using the API stack context. + + @retval FspInfoHeader FSP info header pointer using the API stack context +**/ +FSP_INFO_HEADER * +EFIAPI +GetFspInfoHeaderFromApiContext ( + VOID + ) +{ + FSP_GLOBAL_DATA *FspData; + + FspData = GetFspGlobalDataPointer (); + return (FSP_INFO_HEADER *)(*(UINT32 *)(UINTN)(FspData->CoreStack + CONTEXT_STACK_OFFSET(FspInfoHeader))); +} + /** This function gets the VPD data pointer. -- cgit v1.2.3