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
 |