Reviewed-by: Nate DeSimone <[email protected]> > -----Original Message----- > From: Chiu, Chasel <[email protected]> > Sent: Tuesday, May 19, 2020 8:34 PM > To: [email protected] > Cc: Ma, Maurice <[email protected]>; Desimone, Nathaniel L > <[email protected]>; Zeng, Star <[email protected]> > Subject: [PATCH] IntelFsp2Pkg: Add FunctionParametePtr to FspGlobalData. > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2726 > > When FSP switching stack and calling bootloader functions, the function > parameter in stack may not be accessible easily. > We can store the function parameter pointer to FspGlobalData and retrieve it > after stack switched. > > Also need to add Loader2PeiSwitchStack () to header file as public function > for platform FSP code to consume. > > Cc: Maurice Ma <[email protected]> > Cc: Nate DeSimone <[email protected]> > Cc: Star Zeng <[email protected]> > Signed-off-by: Chasel Chiu <[email protected]> > --- > IntelFsp2Pkg/Include/FspGlobalData.h | 12 ++++++++++-- > IntelFsp2Pkg/Include/Library/FspSwitchStackLib.h | 18 > +++++++++++++++++- > 2 files changed, 27 insertions(+), 3 deletions(-) > > 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..bed2a5d677 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.<BR> > + Copyright (c) 2014 - 2020, Intel Corporation. All rights > + reserved.<BR> > SPDX-License-Identifier: BSD-2-Clause-Patent > > **/ > @@ -36,4 +36,20 @@ Pei2LoaderSwitchStack ( > VOID > ); > > +/** > + > + This function is equilivant 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 > -- > 2.13.3.windows.1
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#59932): https://edk2.groups.io/g/devel/message/59932 Mute This Topic: https://groups.io/mt/74342444/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
