diff --git a/IntelFsp2Pkg/Include/FspGlobalData.h b/IntelFsp2Pkg/Include/FspGlobalData.h index 5bde316893..dba9b48e1a 100644 --- a/IntelFsp2Pkg/Include/FspGlobalData.h +++ b/IntelFsp2Pkg/Include/FspGlobalData.h @@ -52,12 +52,20 @@ typedef struct { VOID *MemoryInitUpdPtr; VOID *SiliconInitUpdPtr; UINT8 ApiIdx; - UINT8 FspMode; // 0: FSP in API mode; 1: FSP in DISPATCH mode + /// + /// 0: FSP in API mode; 1: FSP in DISPATCH mode + /// + UINT8 FspMode; UINT8 OnSeparateStack; UINT8 Reserved3; UINT32 NumberOfPhases; UINT32 PhasesExecuted; - UINT8 Reserved4[20]; + /// + /// To store function parameters pointer + /// so it can be retrieved after stack switched. + /// + VOID *FunctionParameterPtr; + UINT8 Reserved4[16]; UINT32 PerfSig; UINT16 PerfLen; UINT16 Reserved5; diff --git a/IntelFsp2Pkg/Include/Library/FspSwitchStackLib.h b/IntelFsp2Pkg/Include/Library/FspSwitchStackLib.h index 0c76e9f022..f049361d78 100644 --- a/IntelFsp2Pkg/Include/Library/FspSwitchStackLib.h +++ b/IntelFsp2Pkg/Include/Library/FspSwitchStackLib.h @@ -1,6 +1,6 @@ /** @file - Copyright (c) 2014, Intel Corporation. All rights reserved.
+ Copyright (c) 2014 - 2020, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -36,4 +36,20 @@ Pei2LoaderSwitchStack ( VOID ); +/** + + This function is equivalent to Pei2LoaderSwitchStack () but just indicates + the stack after switched is FSP stack. + + @return ReturnKey After switching to the saved stack, + this value will be saved in eax before returning. + + +**/ +UINT32 +EFIAPI +Loader2PeiSwitchStack ( + VOID + ); + #endif