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 <maurice.ma@intel.com> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com> Cc: Star Zeng <star.zeng@intel.com> Signed-off-by: Chasel Chiu <chasel.chiu@intel.com> Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
56 lines
1.3 KiB
C
56 lines
1.3 KiB
C
/** @file
|
|
|
|
Copyright (c) 2014 - 2020, Intel Corporation. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#ifndef _FSP_SWITCH_STACK_LIB_H_
|
|
#define _FSP_SWITCH_STACK_LIB_H_
|
|
|
|
/**
|
|
|
|
This function will switch the current stack to the previous saved stack.
|
|
Before calling the previous stack has to be set in FSP_GLOBAL_DATA.CoreStack.
|
|
EIP
|
|
FLAGS 16 bit FLAGS 16 bit
|
|
EDI
|
|
ESI
|
|
EBP
|
|
ESP
|
|
EBX
|
|
EDX
|
|
ECX
|
|
EAX
|
|
DWORD IDT base1
|
|
StackPointer: DWORD IDT base2
|
|
|
|
@return ReturnKey After switching to the saved stack,
|
|
this value will be saved in eax before returning.
|
|
|
|
|
|
**/
|
|
UINT32
|
|
EFIAPI
|
|
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
|