123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- /** @file
- Copyright (c) 2014 - 2022, 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
- #define FSP_GLOBAL_DATA_VERSION 0x3
- #pragma pack(1)
- typedef enum {
- TempRamInitApiIndex,
- FspInitApiIndex,
- NotifyPhaseApiIndex,
- FspMemoryInitApiIndex,
- TempRamExitApiIndex,
- FspSiliconInitApiIndex,
- FspMultiPhaseSiInitApiIndex,
- FspSmmInitApiIndex,
- FspMultiPhaseMemInitApiIndex,
- FspApiIndexMax
- } FSP_API_INDEX;
- typedef struct {
- VOID *DataPtr;
- UINTN MicrocodeRegionBase;
- UINTN MicrocodeRegionSize;
- UINTN CodeRegionBase;
- UINTN CodeRegionSize;
- UINTN Reserved;
- } 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];
- ///
- /// Offset 0x08
- ///
- UINTN CoreStack;
- VOID *SmmInitUpdPtr;
- ///
- /// IA32: Offset 0x10; X64: Offset 0x18
- ///
- UINT32 StatusCode;
- UINT8 ApiIdx;
- ///
- /// 0: FSP in API mode; 1: FSP in DISPATCH mode
- ///
- UINT8 FspMode;
- UINT8 OnSeparateStack;
- UINT8 Reserved2;
- UINT32 NumberOfPhases;
- UINT32 PhasesExecuted;
- UINT32 Reserved3[8];
- ///
- /// IA32: Offset 0x40; X64: Offset 0x48
- /// Start of UINTN and pointer section
- /// All UINTN and pointer members are put in this section
- /// for maintaining natural alignment for both IA32 and X64 builds.
- ///
- FSP_PLAT_DATA PlatformData;
- VOID *TempRamInitUpdPtr;
- VOID *MemoryInitUpdPtr;
- VOID *SiliconInitUpdPtr;
- ///
- /// IA32: Offset 0x64; X64: Offset 0x90
- /// To store function parameters pointer
- /// so it can be retrieved after stack switched.
- ///
- VOID *FunctionParameterPtr;
- FSP_INFO_HEADER *FspInfoHeader;
- VOID *UpdDataPtr;
- VOID *FspHobListPtr;
- VOID *VariableRequestParameterPtr;
- ///
- /// End of UINTN and pointer section
- /// At this point, next field offset must be either *0h or *8h to
- /// meet natural alignment requirement.
- ///
- UINT8 Reserved4[16];
- UINT32 PerfSig;
- UINT16 PerfLen;
- UINT16 Reserved5;
- UINT32 PerfIdx;
- UINT32 Reserved6;
- UINT64 PerfData[32];
- } FSP_GLOBAL_DATA;
- #pragma pack()
- #endif
|