mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-17 18:54:26 +02:00
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>
79 lines
2.1 KiB
C
79 lines
2.1 KiB
C
/** @file
|
|
|
|
Copyright (c) 2014 - 2020, Intel Corporation. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#ifndef _FSP_GLOBAL_DATA_H_
|
|
#define _FSP_GLOBAL_DATA_H_
|
|
|
|
#include <FspEas.h>
|
|
|
|
#define FSP_IN_API_MODE 0
|
|
#define FSP_IN_DISPATCH_MODE 1
|
|
|
|
#pragma pack(1)
|
|
|
|
typedef enum {
|
|
TempRamInitApiIndex,
|
|
FspInitApiIndex,
|
|
NotifyPhaseApiIndex,
|
|
FspMemoryInitApiIndex,
|
|
TempRamExitApiIndex,
|
|
FspSiliconInitApiIndex,
|
|
FspMultiPhaseSiInitApiIndex,
|
|
FspApiIndexMax
|
|
} FSP_API_INDEX;
|
|
|
|
typedef struct {
|
|
VOID *DataPtr;
|
|
UINT32 MicrocodeRegionBase;
|
|
UINT32 MicrocodeRegionSize;
|
|
UINT32 CodeRegionBase;
|
|
UINT32 CodeRegionSize;
|
|
} FSP_PLAT_DATA;
|
|
|
|
#define FSP_GLOBAL_DATA_SIGNATURE SIGNATURE_32 ('F', 'S', 'P', 'D')
|
|
#define FSP_PERFORMANCE_DATA_SIGNATURE SIGNATURE_32 ('P', 'E', 'R', 'F')
|
|
#define FSP_PERFORMANCE_DATA_TIMER_MASK 0xFFFFFFFFFFFFFF
|
|
|
|
typedef struct {
|
|
UINT32 Signature;
|
|
UINT8 Version;
|
|
UINT8 Reserved1[3];
|
|
UINT32 CoreStack;
|
|
UINT32 StatusCode;
|
|
UINT32 Reserved2[8];
|
|
FSP_PLAT_DATA PlatformData;
|
|
FSP_INFO_HEADER *FspInfoHeader;
|
|
VOID *UpdDataPtr;
|
|
VOID *TempRamInitUpdPtr;
|
|
VOID *MemoryInitUpdPtr;
|
|
VOID *SiliconInitUpdPtr;
|
|
UINT8 ApiIdx;
|
|
///
|
|
/// 0: FSP in API mode; 1: FSP in DISPATCH mode
|
|
///
|
|
UINT8 FspMode;
|
|
UINT8 OnSeparateStack;
|
|
UINT8 Reserved3;
|
|
UINT32 NumberOfPhases;
|
|
UINT32 PhasesExecuted;
|
|
///
|
|
/// To store function parameters pointer
|
|
/// so it can be retrieved after stack switched.
|
|
///
|
|
VOID *FunctionParameterPtr;
|
|
UINT8 Reserved4[16];
|
|
UINT32 PerfSig;
|
|
UINT16 PerfLen;
|
|
UINT16 Reserved5;
|
|
UINT32 PerfIdx;
|
|
UINT64 PerfData[32];
|
|
} FSP_GLOBAL_DATA;
|
|
|
|
#pragma pack()
|
|
|
|
#endif
|