summaryrefslogtreecommitdiff
path: root/Platform/BroxtonPlatformPkg/Common/SampleCode/MdeModulePkg/Core/Pei/PeiMain.h
diff options
context:
space:
mode:
Diffstat (limited to 'Platform/BroxtonPlatformPkg/Common/SampleCode/MdeModulePkg/Core/Pei/PeiMain.h')
-rw-r--r--Platform/BroxtonPlatformPkg/Common/SampleCode/MdeModulePkg/Core/Pei/PeiMain.h1707
1 files changed, 0 insertions, 1707 deletions
diff --git a/Platform/BroxtonPlatformPkg/Common/SampleCode/MdeModulePkg/Core/Pei/PeiMain.h b/Platform/BroxtonPlatformPkg/Common/SampleCode/MdeModulePkg/Core/Pei/PeiMain.h
deleted file mode 100644
index 3a34b06a2d..0000000000
--- a/Platform/BroxtonPlatformPkg/Common/SampleCode/MdeModulePkg/Core/Pei/PeiMain.h
+++ /dev/null
@@ -1,1707 +0,0 @@
-/** @file
- Definition of Pei Core Structures and Services.
-
- Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
-
- This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php.
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#ifndef _PEI_MAIN_H_
-#define _PEI_MAIN_H_
-
-#include <PiPei.h>
-#include <Ppi/DxeIpl.h>
-#include <Ppi/MemoryDiscovered.h>
-#include <Ppi/StatusCode.h>
-#include <Ppi/Reset.h>
-#include <Ppi/FirmwareVolume.h>
-#include <Ppi/FirmwareVolumeInfo.h>
-#include <Ppi/FirmwareVolumeInfo2.h>
-#include <Ppi/Decompress.h>
-#include <Ppi/GuidedSectionExtraction.h>
-#include <Ppi/LoadFile.h>
-#include <Ppi/Security2.h>
-#include <Ppi/TemporaryRamSupport.h>
-#include <Ppi/TemporaryRamDone.h>
-#include <Library/DebugLib.h>
-#include <Library/PeiCoreEntryPoint.h>
-#include <Library/BaseLib.h>
-#include <Library/HobLib.h>
-#include <Library/PerformanceLib.h>
-#include <Library/PeiServicesLib.h>
-#include <Library/ReportStatusCodeLib.h>
-#include <Library/PeCoffLib.h>
-#include <Library/PeCoffGetEntryPointLib.h>
-#include <Library/BaseMemoryLib.h>
-#include <Library/CacheMaintenanceLib.h>
-#include <Library/PcdLib.h>
-#include <IndustryStandard/PeImage.h>
-#include <Library/PeiServicesTablePointerLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Guid/FirmwareFileSystem2.h>
-#include <Guid/FirmwareFileSystem3.h>
-#include <Guid/AprioriFileName.h>
-#include <Guid/ZeroGuid.h>
-
-
-///
-/// It is an FFS type extension used for PeiFindFileEx. It indicates current
-/// Ffs searching is for all PEIMs can be dispatched by PeiCore.
-///
-#define PEI_CORE_INTERNAL_FFS_FILE_DISPATCH_TYPE 0xff
-
-///
-/// Pei Core private data structures
-///
-typedef union {
- EFI_PEI_PPI_DESCRIPTOR *Ppi;
- EFI_PEI_NOTIFY_DESCRIPTOR *Notify;
- VOID *Raw;
-} PEI_PPI_LIST_POINTERS;
-
-///
-/// PPI database structure which contains two link: PpiList and NotifyList. PpiList
-/// is in head of PpiListPtrs array and notify is in end of PpiListPtrs.
-///
-typedef struct {
- ///
- /// index of end of PpiList link list.
- ///
- INTN PpiListEnd;
- ///
- /// index of end of notify link list.
- ///
- INTN NotifyListEnd;
- ///
- /// index of the dispatched notify list.
- ///
- INTN DispatchListEnd;
- ///
- /// index of last installed Ppi description in PpiList link list.
- ///
- INTN LastDispatchedInstall;
- ///
- /// index of last dispatched notify in Notify link list.
- ///
- INTN LastDispatchedNotify;
- ///
- /// Ppi database has the PcdPeiCoreMaxPpiSupported number of entries.
- ///
- PEI_PPI_LIST_POINTERS *PpiListPtrs;
-} PEI_PPI_DATABASE;
-
-
-//
-// PEI_CORE_FV_HANDE.PeimState
-// Do not change these values as there is code doing math to change states.
-// Look for Private->Fv[FvCount].PeimState[PeimCount]++;
-//
-#define PEIM_STATE_NOT_DISPATCHED 0x00
-#define PEIM_STATE_DISPATCHED 0x01
-#define PEIM_STATE_REGISITER_FOR_SHADOW 0x02
-#define PEIM_STATE_DONE 0x03
-
-typedef struct {
- EFI_FIRMWARE_VOLUME_HEADER *FvHeader;
- EFI_PEI_FIRMWARE_VOLUME_PPI *FvPpi;
- EFI_PEI_FV_HANDLE FvHandle;
- //
- // Ponter to the buffer with the PcdPeiCoreMaxPeimPerFv number of Entries.
- //
- UINT8 *PeimState;
- //
- // Ponter to the buffer with the PcdPeiCoreMaxPeimPerFv number of Entries.
- //
- EFI_PEI_FILE_HANDLE *FvFileHandles;
- BOOLEAN ScanFv;
- UINT32 AuthenticationStatus;
-} PEI_CORE_FV_HANDLE;
-
-typedef struct {
- EFI_GUID FvFormat;
- VOID *FvInfo;
- UINT32 FvInfoSize;
- UINT32 AuthenticationStatus;
- EFI_PEI_NOTIFY_DESCRIPTOR NotifyDescriptor;
-} PEI_CORE_UNKNOW_FORMAT_FV_INFO;
-
-#define CACHE_SETION_MAX_NUMBER 0x10
-typedef struct {
- EFI_COMMON_SECTION_HEADER* Section[CACHE_SETION_MAX_NUMBER];
- VOID* SectionData[CACHE_SETION_MAX_NUMBER];
- UINTN SectionSize[CACHE_SETION_MAX_NUMBER];
- UINT32 AuthenticationStatus[CACHE_SETION_MAX_NUMBER];
- UINTN AllSectionCount;
- UINTN SectionIndex;
-} CACHE_SECTION_DATA;
-
-#define HOLE_MAX_NUMBER 0x3
-typedef struct {
- EFI_PHYSICAL_ADDRESS Base;
- UINTN Size;
- UINTN Offset;
- BOOLEAN OffsetPositive;
-} HOLE_MEMORY_DATA;
-
-///
-/// Forward declaration for PEI_CORE_INSTANCE
-///
-typedef struct _PEI_CORE_INSTANCE PEI_CORE_INSTANCE;
-
-
-/**
- Function Pointer type for PeiCore function.
- @param SecCoreData Points to a data structure containing SEC to PEI handoff data, such as the size
- and location of temporary RAM, the stack location and the BFV location.
- @param PpiList Points to a list of one or more PPI descriptors to be installed initially by the PEI core.
- An empty PPI list consists of a single descriptor with the end-tag
- EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST. As part of its initialization
- phase, the PEI Foundation will add these SEC-hosted PPIs to its PPI database such
- that both the PEI Foundation and any modules can leverage the associated service
- calls and/or code in these early PPIs
- @param OldCoreData Pointer to old core data that is used to initialize the
- core's data areas.
-**/
-typedef
-EFI_STATUS
-(EFIAPI *PEICORE_FUNCTION_POINTER)(
- IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData,
- IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList,
- IN PEI_CORE_INSTANCE *OldCoreData
- );
-
-#define PEI_CORE_HANDLE_SIGNATURE SIGNATURE_32('P','e','i','C')
-
-///
-/// Pei Core private data structure instance
-///
-struct _PEI_CORE_INSTANCE {
- UINTN Signature;
-
- ///
- /// Point to ServiceTableShadow
- ///
- EFI_PEI_SERVICES *Ps;
- PEI_PPI_DATABASE PpiData;
-
- ///
- /// The count of FVs which contains FFS and could be dispatched by PeiCore.
- ///
- UINTN FvCount;
-
- ///
- /// Pointer to the buffer with the PcdPeiCoreMaxFvSupported number of entries.
- /// Each entry is for one FV which contains FFS and could be dispatched by PeiCore.
- ///
- PEI_CORE_FV_HANDLE *Fv;
-
- ///
- /// Pointer to the buffer with the PcdPeiCoreMaxFvSupported number of entries.
- /// Each entry is for one FV which could not be dispatched by PeiCore.
- ///
- PEI_CORE_UNKNOW_FORMAT_FV_INFO *UnknownFvInfo;
- UINTN UnknownFvInfoCount;
-
- ///
- /// Pointer to the buffer with the PcdPeiCoreMaxPeimPerFv number of entries.
- ///
- EFI_PEI_FILE_HANDLE *CurrentFvFileHandles;
- UINTN AprioriCount;
- UINTN CurrentPeimFvCount;
- UINTN CurrentPeimCount;
- EFI_PEI_FILE_HANDLE CurrentFileHandle;
- BOOLEAN PeimNeedingDispatch;
- BOOLEAN PeimDispatchOnThisPass;
- BOOLEAN PeimDispatcherReenter;
- EFI_PEI_HOB_POINTERS HobList;
- BOOLEAN SwitchStackSignal;
- BOOLEAN PeiMemoryInstalled;
- VOID *CpuIo;
- EFI_PEI_SECURITY2_PPI *PrivateSecurityPpi;
- EFI_PEI_SERVICES ServiceTableShadow;
- EFI_PEI_PPI_DESCRIPTOR *XipLoadFile;
- EFI_PHYSICAL_ADDRESS PhysicalMemoryBegin;
- UINT64 PhysicalMemoryLength;
- EFI_PHYSICAL_ADDRESS FreePhysicalMemoryTop;
- UINTN HeapOffset;
- BOOLEAN HeapOffsetPositive;
- UINTN StackOffset;
- BOOLEAN StackOffsetPositive;
- PEICORE_FUNCTION_POINTER ShadowedPeiCore;
- CACHE_SECTION_DATA CacheSection;
- //
- // For Loading modules at fixed address feature to cache the top address below which the
- // Runtime code, boot time code and PEI memory will be placed. Please note that the offset between this field
- // and Ps should not be changed since maybe user could get this top address by using the offet to Ps.
- //
- EFI_PHYSICAL_ADDRESS LoadModuleAtFixAddressTopAddress;
- //
- // The field is define for Loading modules at fixed address feature to tracker the PEI code
- // memory range usage. It is a bit mapped array in which every bit indicates the correspoding memory page
- // available or not.
- //
- UINT64 *PeiCodeMemoryRangeUsageBitMap;
- //
- // This field points to the shadowed image read function
- //
- PE_COFF_LOADER_READ_FILE ShadowedImageRead;
-
- //
- // Pointer to the temp buffer with the PcdPeiCoreMaxPeimPerFv + 1 number of entries.
- //
- EFI_PEI_FILE_HANDLE *FileHandles;
- //
- // Pointer to the temp buffer with the PcdPeiCoreMaxPeimPerFv number of entries.
- //
- EFI_GUID *FileGuid;
-
- //
- // Temp Memory Range is not covered by PeiTempMem and Stack.
- // Those Memory Range will be migrated into phisical memory.
- //
- HOLE_MEMORY_DATA HoleData[HOLE_MAX_NUMBER];
-};
-
-///
-/// Pei Core Instance Data Macros
-///
-#define PEI_CORE_INSTANCE_FROM_PS_THIS(a) \
- CR(a, PEI_CORE_INSTANCE, Ps, PEI_CORE_HANDLE_SIGNATURE)
-
-///
-/// Union of temporarily used function pointers (to save stack space)
-///
-typedef union {
- PEICORE_FUNCTION_POINTER PeiCore;
- EFI_PEIM_ENTRY_POINT2 PeimEntry;
- EFI_PEIM_NOTIFY_ENTRY_POINT PeimNotifyEntry;
- EFI_DXE_IPL_PPI *DxeIpl;
- EFI_PEI_PPI_DESCRIPTOR *PpiDescriptor;
- EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor;
- VOID *Raw;
-} PEI_CORE_TEMP_POINTERS;
-
-typedef struct {
- CONST EFI_SEC_PEI_HAND_OFF *SecCoreData;
- EFI_PEI_PPI_DESCRIPTOR *PpiList;
- VOID *Data;
-} PEI_CORE_PARAMETERS;
-
-//
-// PeiCore function
-//
-/**
- The entry routine to Pei Core, invoked by PeiMain during transition
- from SEC to PEI. After switching stack in the PEI core, it will restart
- with the old core data.
-
-
- @param SecCoreData Points to a data structure containing SEC to PEI handoff data, such as the size
- and location of temporary RAM, the stack location and the BFV location.
- @param PpiList Points to a list of one or more PPI descriptors to be installed initially by the PEI core.
- An empty PPI list consists of a single descriptor with the end-tag
- EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST. As part of its initialization
- phase, the PEI Foundation will add these SEC-hosted PPIs to its PPI database such
- that both the PEI Foundation and any modules can leverage the associated service
- calls and/or code in these early PPIs
- @param Data Pointer to old core data that is used to initialize the
- core's data areas.
-
-**/
-VOID
-EFIAPI
-PeiCore (
- IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData,
- IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList,
- IN VOID *Data
- );
-
-//
-// Dispatcher support functions
-//
-
-/**
- This is the POSTFIX version of the dependency evaluator. When a
- PUSH [PPI GUID] is encountered, a pointer to the GUID is stored on
- the evaluation stack. When that entry is poped from the evaluation
- stack, the PPI is checked if it is installed. This method allows
- some time savings as not all PPIs must be checked for certain
- operation types (AND, OR).
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param DependencyExpression Pointer to a dependency expression. The Grammar adheres to
- the BNF described above and is stored in postfix notation.
-
- @retval TRUE if it is a well-formed Grammar
- @retval FALSE if the dependency expression overflows the evaluation stack
- if the dependency expression underflows the evaluation stack
- if the dependency expression is not a well-formed Grammar.
-
-**/
-BOOLEAN
-PeimDispatchReadiness (
- IN EFI_PEI_SERVICES **PeiServices,
- IN VOID *DependencyExpression
- );
-
-/**
- Conduct PEIM dispatch.
-
- @param SecCoreData Pointer to the data structure containing SEC to PEI handoff data
- @param PrivateData Pointer to the private data passed in from caller
-
-**/
-VOID
-PeiDispatcher (
- IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData,
- IN PEI_CORE_INSTANCE *PrivateData
- );
-
-/**
- Initialize the Dispatcher's data members
-
- @param PrivateData PeiCore's private data structure
- @param OldCoreData Old data from SecCore
- NULL if being run in non-permament memory mode.
- @param SecCoreData Points to a data structure containing SEC to PEI handoff data, such as the size
- and location of temporary RAM, the stack location and the BFV location.
-
-**/
-VOID
-InitializeDispatcherData (
- IN PEI_CORE_INSTANCE *PrivateData,
- IN PEI_CORE_INSTANCE *OldCoreData,
- IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData
- );
-
-/**
- This routine parses the Dependency Expression, if available, and
- decides if the module can be executed.
-
-
- @param Private PeiCore's private data structure
- @param FileHandle PEIM's file handle
- @param PeimCount The index of last dispatched PEIM.
-
- @retval TRUE Can be dispatched
- @retval FALSE Cannot be dispatched
-
-**/
-BOOLEAN
-DepexSatisfied (
- IN PEI_CORE_INSTANCE *Private,
- IN EFI_PEI_FILE_HANDLE FileHandle,
- IN UINTN PeimCount
- );
-
-//
-// PPI support functions
-//
-/**
- Initialize PPI services.
-
- @param PrivateData Pointer to the PEI Core data.
- @param OldCoreData Pointer to old PEI Core data.
- NULL if being run in non-permament memory mode.
-
-**/
-VOID
-InitializePpiServices (
- IN PEI_CORE_INSTANCE *PrivateData,
- IN PEI_CORE_INSTANCE *OldCoreData
- );
-
-/**
- Migrate the Hob list from the temporary memory stack to PEI installed memory.
-
- @param SecCoreData Points to a data structure containing SEC to PEI handoff data, such as the size
- and location of temporary RAM, the stack location and the BFV location.
- @param PrivateData Pointer to PeiCore's private data structure.
-
-**/
-VOID
-ConvertPpiPointers (
- IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData,
- IN PEI_CORE_INSTANCE *PrivateData
- );
-
-/**
- Install PPI services. It is implementation of EFI_PEI_SERVICE.InstallPpi.
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param PpiList Pointer to ppi array that want to be installed.
-
- @retval EFI_SUCCESS if all PPIs in PpiList are successfully installed.
- @retval EFI_INVALID_PARAMETER if PpiList is NULL pointer
- if any PPI in PpiList is not valid
- @retval EFI_OUT_OF_RESOURCES if there is no more memory resource to install PPI
-
-**/
-EFI_STATUS
-EFIAPI
-PeiInstallPpi (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList
- );
-
-/**
- Re-Install PPI services.
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param OldPpi Pointer to the old PEI PPI Descriptors.
- @param NewPpi Pointer to the new PEI PPI Descriptors.
-
- @retval EFI_SUCCESS if the operation was successful
- @retval EFI_INVALID_PARAMETER if OldPpi or NewPpi is NULL
- if NewPpi is not valid
- @retval EFI_NOT_FOUND if the PPI was not in the database
-
-**/
-EFI_STATUS
-EFIAPI
-PeiReInstallPpi (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_PPI_DESCRIPTOR *OldPpi,
- IN CONST EFI_PEI_PPI_DESCRIPTOR *NewPpi
- );
-
-/**
- Locate a given named PPI.
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param Guid Pointer to GUID of the PPI.
- @param Instance Instance Number to discover.
- @param PpiDescriptor Pointer to reference the found descriptor. If not NULL,
- returns a pointer to the descriptor (includes flags, etc)
- @param Ppi Pointer to reference the found PPI
-
- @retval EFI_SUCCESS if the PPI is in the database
- @retval EFI_NOT_FOUND if the PPI is not in the database
-
-**/
-EFI_STATUS
-EFIAPI
-PeiLocatePpi (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_GUID *Guid,
- IN UINTN Instance,
- IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor,
- IN OUT VOID **Ppi
- );
-
-/**
- Install a notification for a given PPI.
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param NotifyList Pointer to list of Descriptors to notify upon.
-
- @retval EFI_SUCCESS if successful
- @retval EFI_OUT_OF_RESOURCES if no space in the database
- @retval EFI_INVALID_PARAMETER if not a good decriptor
-
-**/
-EFI_STATUS
-EFIAPI
-PeiNotifyPpi (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList
- );
-
-/**
- Process the Notify List at dispatch level.
-
- @param PrivateData PeiCore's private data structure.
-
-**/
-VOID
-ProcessNotifyList (
- IN PEI_CORE_INSTANCE *PrivateData
- );
-
-/**
- Dispatch notifications.
-
- @param PrivateData PeiCore's private data structure
- @param NotifyType Type of notify to fire.
- @param InstallStartIndex Install Beginning index.
- @param InstallStopIndex Install Ending index.
- @param NotifyStartIndex Notify Beginning index.
- @param NotifyStopIndex Notify Ending index.
-
-**/
-VOID
-DispatchNotify (
- IN PEI_CORE_INSTANCE *PrivateData,
- IN UINTN NotifyType,
- IN INTN InstallStartIndex,
- IN INTN InstallStopIndex,
- IN INTN NotifyStartIndex,
- IN INTN NotifyStopIndex
- );
-
-//
-// Boot mode support functions
-//
-/**
- This service enables PEIMs to ascertain the present value of the boot mode.
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param BootMode A pointer to contain the value of the boot mode.
-
- @retval EFI_SUCCESS The boot mode was returned successfully.
- @retval EFI_INVALID_PARAMETER BootMode is NULL.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiGetBootMode (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN OUT EFI_BOOT_MODE *BootMode
- );
-
-/**
- This service enables PEIMs to update the boot mode variable.
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param BootMode The value of the boot mode to set.
-
- @return EFI_SUCCESS The value was successfully updated
-
-**/
-EFI_STATUS
-EFIAPI
-PeiSetBootMode (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN EFI_BOOT_MODE BootMode
- );
-
-//
-// Security support functions
-//
-/**
- Initialize the security services.
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param OldCoreData Pointer to the old core data.
- NULL if being run in non-permament memory mode.
-
-**/
-VOID
-InitializeSecurityServices (
- IN EFI_PEI_SERVICES **PeiServices,
- IN PEI_CORE_INSTANCE *OldCoreData
- );
-
-/**
- Verify a Firmware volume.
-
- @param CurrentFvAddress Pointer to the current Firmware Volume under consideration
-
- @retval EFI_SUCCESS Firmware Volume is legal
- @retval EFI_SECURITY_VIOLATION Firmware Volume fails integrity test
-
-**/
-EFI_STATUS
-VerifyFv (
- IN EFI_FIRMWARE_VOLUME_HEADER *CurrentFvAddress
- );
-
-/**
- Provide a callout to the security verification service.
-
- @param PrivateData PeiCore's private data structure
- @param VolumeHandle Handle of FV
- @param FileHandle Handle of PEIM's ffs
- @param AuthenticationStatus Authentication status
-
- @retval EFI_SUCCESS Image is OK
- @retval EFI_SECURITY_VIOLATION Image is illegal
- @retval EFI_NOT_FOUND If security PPI is not installed.
-
-**/
-EFI_STATUS
-VerifyPeim (
- IN PEI_CORE_INSTANCE *PrivateData,
- IN EFI_PEI_FV_HANDLE VolumeHandle,
- IN EFI_PEI_FILE_HANDLE FileHandle,
- IN UINT32 AuthenticationStatus
- );
-
-/**
- Gets the pointer to the HOB List.
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param HobList Pointer to the HOB List.
-
- @retval EFI_SUCCESS Get the pointer of HOB List
- @retval EFI_NOT_AVAILABLE_YET the HOB List is not yet published
- @retval EFI_INVALID_PARAMETER HobList is NULL (in debug mode)
-
-**/
-EFI_STATUS
-EFIAPI
-PeiGetHobList (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN OUT VOID **HobList
- );
-
-/**
- Add a new HOB to the HOB List.
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param Type Type of the new HOB.
- @param Length Length of the new HOB to allocate.
- @param Hob Pointer to the new HOB.
-
- @return EFI_SUCCESS Success to create hob.
- @retval EFI_INVALID_PARAMETER if Hob is NULL
- @retval EFI_NOT_AVAILABLE_YET if HobList is still not available.
- @retval EFI_OUT_OF_RESOURCES if there is no more memory to grow the Hoblist.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiCreateHob (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN UINT16 Type,
- IN UINT16 Length,
- IN OUT VOID **Hob
- );
-
-/**
- Builds a Handoff Information Table HOB
-
- @param BootMode Current Bootmode
- @param MemoryBegin Start Memory Address.
- @param MemoryLength Length of Memory.
-
- @return EFI_SUCCESS Always success to initialize HOB.
-
-**/
-EFI_STATUS
-PeiCoreBuildHobHandoffInfoTable (
- IN EFI_BOOT_MODE BootMode,
- IN EFI_PHYSICAL_ADDRESS MemoryBegin,
- IN UINT64 MemoryLength
- );
-
-
-//
-// FFS Fw Volume support functions
-//
-/**
- Searches for the next matching file in the firmware volume.
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param SearchType Filter to find only files of this type.
- Type EFI_FV_FILETYPE_ALL causes no filtering to be done.
- @param FvHandle Handle of firmware volume in which to search.
- @param FileHandle On entry, points to the current handle from which to begin searching or NULL to start
- at the beginning of the firmware volume. On exit, points the file handle of the next file
- in the volume or NULL if there are no more files.
-
- @retval EFI_NOT_FOUND The file was not found.
- @retval EFI_NOT_FOUND The header checksum was not zero.
- @retval EFI_SUCCESS The file was found.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiFfsFindNextFile (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN UINT8 SearchType,
- IN EFI_PEI_FV_HANDLE FvHandle,
- IN OUT EFI_PEI_FILE_HANDLE *FileHandle
- );
-
-/**
- Searches for the next matching section within the specified file.
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation
- @param SectionType Filter to find only sections of this type.
- @param FileHandle Pointer to the current file to search.
- @param SectionData A pointer to the discovered section, if successful.
- NULL if section not found
-
- @retval EFI_NOT_FOUND The section was not found.
- @retval EFI_SUCCESS The section was found.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiFfsFindSectionData (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN EFI_SECTION_TYPE SectionType,
- IN EFI_PEI_FILE_HANDLE FileHandle,
- OUT VOID **SectionData
- );
-
-/**
- Searches for the next matching section within the specified file.
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param SectionType The value of the section type to find.
- @param SectionInstance Section instance to find.
- @param FileHandle Handle of the firmware file to search.
- @param SectionData A pointer to the discovered section, if successful.
- @param AuthenticationStatus A pointer to the authentication status for this section.
-
- @retval EFI_SUCCESS The section was found.
- @retval EFI_NOT_FOUND The section was not found.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiFfsFindSectionData3 (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN EFI_SECTION_TYPE SectionType,
- IN UINTN SectionInstance,
- IN EFI_PEI_FILE_HANDLE FileHandle,
- OUT VOID **SectionData,
- OUT UINT32 *AuthenticationStatus
- );
-
-/**
- Search the firmware volumes by index
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation
- @param Instance This instance of the firmware volume to find. The value 0 is the Boot Firmware
- Volume (BFV).
- @param VolumeHandle On exit, points to the next volume handle or NULL if it does not exist.
-
- @retval EFI_INVALID_PARAMETER VolumeHandle is NULL
- @retval EFI_NOT_FOUND The volume was not found.
- @retval EFI_SUCCESS The volume was found.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiFfsFindNextVolume (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN UINTN Instance,
- IN OUT EFI_PEI_FV_HANDLE *VolumeHandle
- );
-
-//
-// Memory support functions
-//
-/**
- Initialize the memory services.
-
- @param PrivateData PeiCore's private data structure
- @param SecCoreData Points to a data structure containing SEC to PEI handoff data, such as the size
- and location of temporary RAM, the stack location and the BFV location.
- @param OldCoreData Pointer to the PEI Core data.
- NULL if being run in non-permament memory mode.
-
-**/
-VOID
-InitializeMemoryServices (
- IN PEI_CORE_INSTANCE *PrivateData,
- IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData,
- IN PEI_CORE_INSTANCE *OldCoreData
- );
-
-/**
- Install the permanent memory is now available.
- Creates HOB (PHIT and Stack).
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param MemoryBegin Start of memory address.
- @param MemoryLength Length of memory.
-
- @return EFI_SUCCESS Always success.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiInstallPeiMemory (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN EFI_PHYSICAL_ADDRESS MemoryBegin,
- IN UINT64 MemoryLength
- );
-
-/**
- Memory allocation service on permanent memory,
- not usable prior to the memory installation.
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param MemoryType Type of memory to allocate.
- @param Pages Number of pages to allocate.
- @param Memory Pointer of memory allocated.
-
- @retval EFI_SUCCESS The allocation was successful
- @retval EFI_INVALID_PARAMETER Only AllocateAnyAddress is supported.
- @retval EFI_NOT_AVAILABLE_YET Called with permanent memory not available
- @retval EFI_OUT_OF_RESOURCES There is not enough HOB heap to satisfy the requirement
- to allocate the number of pages.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiAllocatePages (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN EFI_MEMORY_TYPE MemoryType,
- IN UINTN Pages,
- OUT EFI_PHYSICAL_ADDRESS *Memory
- );
-
-/**
- Memory allocation service on the temporary memory.
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param Size Amount of memory required
- @param Buffer Address of pointer to the buffer
-
- @retval EFI_SUCCESS The allocation was successful
- @retval EFI_OUT_OF_RESOURCES There is not enough heap to satisfy the requirement
- to allocate the requested size.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiAllocatePool (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN UINTN Size,
- OUT VOID **Buffer
- );
-
-/**
- Routine for load image file.
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param FileHandle Pointer to the FFS file header of the image.
- @param PeimState The dispatch state of the input PEIM handle.
- @param EntryPoint Pointer to entry point of specified image file for output.
- @param AuthenticationState Pointer to attestation authentication state of image.
-
- @retval EFI_SUCCESS Image is successfully loaded.
- @retval EFI_NOT_FOUND Fail to locate necessary PPI
- @retval Others Fail to load file.
-
-**/
-EFI_STATUS
-PeiLoadImage (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN EFI_PEI_FILE_HANDLE FileHandle,
- IN UINT8 PeimState,
- OUT EFI_PHYSICAL_ADDRESS *EntryPoint,
- OUT UINT32 *AuthenticationState
- );
-
-/**
- Core version of the Status Code reporter
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param CodeType Type of Status Code.
- @param Value Value to output for Status Code.
- @param Instance Instance Number of this status code.
- @param CallerId ID of the caller of this status code.
- @param Data Optional data associated with this status code.
-
- @retval EFI_SUCCESS if status code is successfully reported
- @retval EFI_NOT_AVAILABLE_YET if StatusCodePpi has not been installed
-
-**/
-EFI_STATUS
-EFIAPI
-PeiReportStatusCode (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN EFI_STATUS_CODE_TYPE CodeType,
- IN EFI_STATUS_CODE_VALUE Value,
- IN UINT32 Instance,
- IN CONST EFI_GUID *CallerId,
- IN CONST EFI_STATUS_CODE_DATA *Data OPTIONAL
- );
-
-/**
- Core version of the Reset System
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
-
- @retval EFI_NOT_AVAILABLE_YET PPI not available yet.
- @retval EFI_DEVICE_ERROR Did not reset system.
- Otherwise, resets the system.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiResetSystem (
- IN CONST EFI_PEI_SERVICES **PeiServices
- );
-
-/**
- Initialize PeiCore Fv List.
-
- @param PrivateData Pointer to PEI_CORE_INSTANCE.
- @param SecCoreData Pointer to EFI_SEC_PEI_HAND_OFF.
-
-**/
-VOID
-PeiInitializeFv (
- IN PEI_CORE_INSTANCE *PrivateData,
- IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData
- );
-
-/**
- Process Firmware Volum Information once FvInfoPPI install.
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param NotifyDescriptor Address of the notification descriptor data structure.
- @param Ppi Address of the PPI that was installed.
-
- @retval EFI_SUCCESS if the interface could be successfully installed
-
-**/
-EFI_STATUS
-EFIAPI
-FirmwareVolmeInfoPpiNotifyCallback (
- IN EFI_PEI_SERVICES **PeiServices,
- IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
- IN VOID *Ppi
- );
-
-/**
- Given the input VolumeHandle, search for the next matching name file.
-
- @param FileName File name to search.
- @param VolumeHandle The current FV to search.
- @param FileHandle Pointer to the file matching name in VolumeHandle.
- NULL if file not found
-
- @retval EFI_NOT_FOUND No files matching the search criteria were found
- @retval EFI_SUCCESS Success to search given file
-
-**/
-EFI_STATUS
-EFIAPI
-PeiFfsFindFileByName (
- IN CONST EFI_GUID *FileName,
- IN EFI_PEI_FV_HANDLE VolumeHandle,
- OUT EFI_PEI_FILE_HANDLE *FileHandle
- );
-
-/**
- Returns information about a specific file.
-
- @param FileHandle Handle of the file.
- @param FileInfo Upon exit, points to the file's information.
-
- @retval EFI_INVALID_PARAMETER If FileInfo is NULL.
- @retval EFI_INVALID_PARAMETER If FileHandle does not represent a valid file.
- @retval EFI_SUCCESS File information returned.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiFfsGetFileInfo (
- IN EFI_PEI_FILE_HANDLE FileHandle,
- OUT EFI_FV_FILE_INFO *FileInfo
- );
-
-/**
- Returns information about a specific file.
-
- @param FileHandle Handle of the file.
- @param FileInfo Upon exit, points to the file's information.
-
- @retval EFI_INVALID_PARAMETER If FileInfo is NULL.
- @retval EFI_INVALID_PARAMETER If FileHandle does not represent a valid file.
- @retval EFI_SUCCESS File information returned.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiFfsGetFileInfo2 (
- IN EFI_PEI_FILE_HANDLE FileHandle,
- OUT EFI_FV_FILE_INFO2 *FileInfo
- );
-
-/**
- Returns information about the specified volume.
-
- @param VolumeHandle Handle of the volume.
- @param VolumeInfo Upon exit, points to the volume's information.
-
- @retval EFI_INVALID_PARAMETER If VolumeHandle does not represent a valid volume.
- @retval EFI_INVALID_PARAMETER If VolumeInfo is NULL.
- @retval EFI_SUCCESS Volume information returned.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiFfsGetVolumeInfo (
- IN EFI_PEI_FV_HANDLE VolumeHandle,
- OUT EFI_FV_INFO *VolumeInfo
- );
-
-/**
- This routine enable a PEIM to register itself to shadow when PEI Foundation
- discovery permanent memory.
-
- @param FileHandle File handle of a PEIM.
-
- @retval EFI_NOT_FOUND The file handle doesn't point to PEIM itself.
- @retval EFI_ALREADY_STARTED Indicate that the PEIM has been registered itself.
- @retval EFI_SUCCESS Successfully to register itself.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiRegisterForShadow (
- IN EFI_PEI_FILE_HANDLE FileHandle
- );
-
-/**
- Initialize image service that install PeiLoadFilePpi.
-
- @param PrivateData Pointer to PeiCore's private data structure PEI_CORE_INSTANCE.
- @param OldCoreData Pointer to Old PeiCore's private data.
- If NULL, PeiCore is entered at first time, stack/heap in temporary memory.
- If not NULL, PeiCore is entered at second time, stack/heap has been moved
- to permenent memory.
-
-**/
-VOID
-InitializeImageServices (
- IN PEI_CORE_INSTANCE *PrivateData,
- IN PEI_CORE_INSTANCE *OldCoreData
- );
-
-/**
- The wrapper function of PeiLoadImageLoadImage().
-
- @param This Pointer to EFI_PEI_LOAD_FILE_PPI.
- @param FileHandle Pointer to the FFS file header of the image.
- @param ImageAddressArg Pointer to PE/TE image.
- @param ImageSizeArg Size of PE/TE image.
- @param EntryPoint Pointer to entry point of specified image file for output.
- @param AuthenticationState Pointer to attestation authentication state of image.
-
- @return Status of PeiLoadImageLoadImage().
-
-**/
-EFI_STATUS
-EFIAPI
-PeiLoadImageLoadImageWrapper (
- IN CONST EFI_PEI_LOAD_FILE_PPI *This,
- IN EFI_PEI_FILE_HANDLE FileHandle,
- OUT EFI_PHYSICAL_ADDRESS *ImageAddressArg, OPTIONAL
- OUT UINT64 *ImageSizeArg, OPTIONAL
- OUT EFI_PHYSICAL_ADDRESS *EntryPoint,
- OUT UINT32 *AuthenticationState
- );
-
-/**
- Provide a callback for when the security PPI is installed.
-
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
- @param NotifyDescriptor The descriptor for the notification event.
- @param Ppi Pointer to the PPI in question.
-
- @return Always success
-
-**/
-EFI_STATUS
-EFIAPI
-SecurityPpiNotifyCallback (
- IN EFI_PEI_SERVICES **PeiServices,
- IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
- IN VOID *Ppi
- );
-
-/**
- Get Fv image from the FV type file, then install FV INFO(2) ppi, Build FV hob.
-
- @param PrivateData PeiCore's private data structure
- @param ParentFvCoreHandle Pointer of EFI_CORE_FV_HANDLE to parent Fv image that contain this Fv image.
- @param ParentFvFileHandle File handle of a Fv type file that contain this Fv image.
-
- @retval EFI_NOT_FOUND FV image can't be found.
- @retval EFI_SUCCESS Successfully to process it.
- @retval EFI_OUT_OF_RESOURCES Can not allocate page when aligning FV image
- @retval EFI_SECURITY_VIOLATION Image is illegal
- @retval Others Can not find EFI_SECTION_FIRMWARE_VOLUME_IMAGE section
-
-**/
-EFI_STATUS
-ProcessFvFile (
- IN PEI_CORE_INSTANCE *PrivateData,
- IN PEI_CORE_FV_HANDLE *ParentFvCoreHandle,
- IN EFI_PEI_FILE_HANDLE ParentFvFileHandle
- );
-
-/**
- Get instance of PEI_CORE_FV_HANDLE for next volume according to given index.
-
- This routine also will install FvInfo ppi for FV hob in PI ways.
-
- @param Private Pointer of PEI_CORE_INSTANCE
- @param Instance The index of FV want to be searched.
-
- @return Instance of PEI_CORE_FV_HANDLE.
-
-**/
-PEI_CORE_FV_HANDLE *
-FindNextCoreFvHandle (
- IN PEI_CORE_INSTANCE *Private,
- IN UINTN Instance
- );
-
-//
-// Default EFI_PEI_CPU_IO_PPI support for EFI_PEI_SERVICES table when PeiCore initialization.
-//
-
-/**
- Memory-based read services.
-
- This function is to perform the Memory Access Read service based on installed
- instance of the EFI_PEI_CPU_IO_PPI.
- If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
- return EFI_NOT_YET_AVAILABLE.
-
- @param PeiServices An indirect pointer to the PEI Services Table
- published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Width The width of the access. Enumerated in bytes.
- @param Address The physical address of the access.
- @param Count The number of accesses to perform.
- @param Buffer A pointer to the buffer of data.
-
- @retval EFI_SUCCESS The function completed successfully.
- @retval EFI_NOT_YET_AVAILABLE The service has not been installed.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiDefaultMemRead (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN EFI_PEI_CPU_IO_PPI_WIDTH Width,
- IN UINT64 Address,
- IN UINTN Count,
- IN OUT VOID *Buffer
- );
-
-/**
- Memory-based write services.
-
- This function is to perform the Memory Access Write service based on installed
- instance of the EFI_PEI_CPU_IO_PPI.
- If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
- return EFI_NOT_YET_AVAILABLE.
-
- @param PeiServices An indirect pointer to the PEI Services Table
- published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Width The width of the access. Enumerated in bytes.
- @param Address The physical address of the access.
- @param Count The number of accesses to perform.
- @param Buffer A pointer to the buffer of data.
-
- @retval EFI_SUCCESS The function completed successfully.
- @retval EFI_NOT_YET_AVAILABLE The service has not been installed.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiDefaultMemWrite (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN EFI_PEI_CPU_IO_PPI_WIDTH Width,
- IN UINT64 Address,
- IN UINTN Count,
- IN OUT VOID *Buffer
- );
-
-/**
- IO-based read services.
-
- This function is to perform the IO-base read service for the EFI_PEI_CPU_IO_PPI.
- If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
- return EFI_NOT_YET_AVAILABLE.
-
- @param PeiServices An indirect pointer to the PEI Services Table
- published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Width The width of the access. Enumerated in bytes.
- @param Address The physical address of the access.
- @param Count The number of accesses to perform.
- @param Buffer A pointer to the buffer of data.
-
- @retval EFI_SUCCESS The function completed successfully.
- @retval EFI_NOT_YET_AVAILABLE The service has not been installed.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiDefaultIoRead (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN EFI_PEI_CPU_IO_PPI_WIDTH Width,
- IN UINT64 Address,
- IN UINTN Count,
- IN OUT VOID *Buffer
- );
-
-/**
- IO-based write services.
-
- This function is to perform the IO-base write service for the EFI_PEI_CPU_IO_PPI.
- If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
- return EFI_NOT_YET_AVAILABLE.
-
- @param PeiServices An indirect pointer to the PEI Services Table
- published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Width The width of the access. Enumerated in bytes.
- @param Address The physical address of the access.
- @param Count The number of accesses to perform.
- @param Buffer A pointer to the buffer of data.
-
- @retval EFI_SUCCESS The function completed successfully.
- @retval EFI_NOT_YET_AVAILABLE The service has not been installed.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiDefaultIoWrite (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN EFI_PEI_CPU_IO_PPI_WIDTH Width,
- IN UINT64 Address,
- IN UINTN Count,
- IN OUT VOID *Buffer
- );
-
-/**
- 8-bit I/O read operations.
-
- If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
- return 0.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Address The physical address of the access.
-
- @return An 8-bit value returned from the I/O space.
-
-**/
-UINT8
-EFIAPI
-PeiDefaultIoRead8 (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN UINT64 Address
- );
-
-/**
- Reads an 16-bit I/O port.
-
- If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
- return 0.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Address The physical address of the access.
-
- @return A 16-bit value returned from the I/O space.
-
-**/
-UINT16
-EFIAPI
-PeiDefaultIoRead16 (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN UINT64 Address
- );
-
-/**
- Reads an 32-bit I/O port.
-
- If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
- return 0.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Address The physical address of the access.
-
- @return A 32-bit value returned from the I/O space.
-
-**/
-UINT32
-EFIAPI
-PeiDefaultIoRead32 (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN UINT64 Address
- );
-
-/**
- Reads an 64-bit I/O port.
-
- If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
- return 0.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Address The physical address of the access.
-
- @return A 64-bit value returned from the I/O space.
-
-**/
-UINT64
-EFIAPI
-PeiDefaultIoRead64 (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN UINT64 Address
- );
-
-/**
- 8-bit I/O write operations.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Address The physical address of the access.
- @param Data The data to write.
-
-**/
-VOID
-EFIAPI
-PeiDefaultIoWrite8 (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN UINT64 Address,
- IN UINT8 Data
- );
-
-/**
- 16-bit I/O write operations.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Address The physical address of the access.
- @param Data The data to write.
-
-**/
-VOID
-EFIAPI
-PeiDefaultIoWrite16 (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN UINT64 Address,
- IN UINT16 Data
- );
-
-/**
- 32-bit I/O write operations.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Address The physical address of the access.
- @param Data The data to write.
-
-**/
-VOID
-EFIAPI
-PeiDefaultIoWrite32 (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN UINT64 Address,
- IN UINT32 Data
- );
-
-/**
- 64-bit I/O write operations.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Address The physical address of the access.
- @param Data The data to write.
-
-**/
-VOID
-EFIAPI
-PeiDefaultIoWrite64 (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN UINT64 Address,
- IN UINT64 Data
- );
-
-/**
- 8-bit memory read operations.
-
- If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
- return 0.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Address The physical address of the access.
-
- @return An 8-bit value returned from the memory space.
-
-**/
-UINT8
-EFIAPI
-PeiDefaultMemRead8 (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN UINT64 Address
- );
-
-/**
- 16-bit memory read operations.
-
- If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
- return 0.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Address The physical address of the access.
-
- @return An 16-bit value returned from the memory space.
-
-**/
-UINT16
-EFIAPI
-PeiDefaultMemRead16 (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN UINT64 Address
- );
-
-/**
- 32-bit memory read operations.
-
- If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
- return 0.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Address The physical address of the access.
-
- @return An 32-bit value returned from the memory space.
-
-**/
-UINT32
-EFIAPI
-PeiDefaultMemRead32 (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN UINT64 Address
- );
-
-/**
- 64-bit memory read operations.
-
- If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
- return 0.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Address The physical address of the access.
-
- @return An 64-bit value returned from the memory space.
-
-**/
-UINT64
-EFIAPI
-PeiDefaultMemRead64 (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN UINT64 Address
- );
-
-/**
- 8-bit memory write operations.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Address The physical address of the access.
- @param Data The data to write.
-
-**/
-VOID
-EFIAPI
-PeiDefaultMemWrite8 (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN UINT64 Address,
- IN UINT8 Data
- );
-
-/**
- 16-bit memory write operations.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Address The physical address of the access.
- @param Data The data to write.
-
-**/
-VOID
-EFIAPI
-PeiDefaultMemWrite16 (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN UINT64 Address,
- IN UINT16 Data
- );
-
-/**
- 32-bit memory write operations.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Address The physical address of the access.
- @param Data The data to write.
-
-**/
-VOID
-EFIAPI
-PeiDefaultMemWrite32 (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN UINT64 Address,
- IN UINT32 Data
- );
-
-/**
- 64-bit memory write operations.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Address The physical address of the access.
- @param Data The data to write.
-
-**/
-VOID
-EFIAPI
-PeiDefaultMemWrite64 (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_CPU_IO_PPI *This,
- IN UINT64 Address,
- IN UINT64 Data
- );
-
-extern EFI_PEI_CPU_IO_PPI gPeiDefaultCpuIoPpi;
-
-//
-// Default EFI_PEI_PCI_CFG2_PPI support for EFI_PEI_SERVICES table when PeiCore initialization.
-//
-
-/**
- Reads from a given location in the PCI configuration space.
-
- If the EFI_PEI_PCI_CFG2_PPI is not installed by platform/chipset PEIM, then
- return EFI_NOT_YET_AVAILABLE.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Width The width of the access. Enumerated in bytes.
- See EFI_PEI_PCI_CFG_PPI_WIDTH above.
- @param Address The physical address of the access. The format of
- the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS.
- @param Buffer A pointer to the buffer of data.
-
- @retval EFI_SUCCESS The function completed successfully.
- @retval EFI_INVALID_PARAMETER The invalid access width.
- @retval EFI_NOT_YET_AVAILABLE If the EFI_PEI_PCI_CFG2_PPI is not installed by platform/chipset PEIM.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiDefaultPciCfg2Read (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_PCI_CFG2_PPI *This,
- IN EFI_PEI_PCI_CFG_PPI_WIDTH Width,
- IN UINT64 Address,
- IN OUT VOID *Buffer
- );
-
-/**
- Write to a given location in the PCI configuration space.
-
- If the EFI_PEI_PCI_CFG2_PPI is not installed by platform/chipset PEIM, then
- return EFI_NOT_YET_AVAILABLE.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Width The width of the access. Enumerated in bytes.
- See EFI_PEI_PCI_CFG_PPI_WIDTH above.
- @param Address The physical address of the access. The format of
- the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS.
- @param Buffer A pointer to the buffer of data.
-
- @retval EFI_SUCCESS The function completed successfully.
- @retval EFI_INVALID_PARAMETER The invalid access width.
- @retval EFI_NOT_YET_AVAILABLE If the EFI_PEI_PCI_CFG2_PPI is not installed by platform/chipset PEIM.
-**/
-EFI_STATUS
-EFIAPI
-PeiDefaultPciCfg2Write (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_PCI_CFG2_PPI *This,
- IN EFI_PEI_PCI_CFG_PPI_WIDTH Width,
- IN UINT64 Address,
- IN OUT VOID *Buffer
- );
-
-/**
- This function performs a read-modify-write operation on the contents from a given
- location in the PCI configuration space.
-
- @param PeiServices An indirect pointer to the PEI Services Table
- published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Width The width of the access. Enumerated in bytes. Type
- EFI_PEI_PCI_CFG_PPI_WIDTH is defined in Read().
- @param Address The physical address of the access.
- @param SetBits Points to value to bitwise-OR with the read configuration value.
- The size of the value is determined by Width.
- @param ClearBits Points to the value to negate and bitwise-AND with the read configuration value.
- The size of the value is determined by Width.
-
- @retval EFI_SUCCESS The function completed successfully.
- @retval EFI_INVALID_PARAMETER The invalid access width.
- @retval EFI_NOT_YET_AVAILABLE If the EFI_PEI_PCI_CFG2_PPI is not installed by platform/chipset PEIM.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiDefaultPciCfg2Modify (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_PCI_CFG2_PPI *This,
- IN EFI_PEI_PCI_CFG_PPI_WIDTH Width,
- IN UINT64 Address,
- IN VOID *SetBits,
- IN VOID *ClearBits
- );
-
-extern EFI_PEI_PCI_CFG2_PPI gPeiDefaultPciCfg2Ppi;
-
-/**
- After PeiCore image is shadowed into permanent memory, all build-in FvPpi should
- be re-installed with the instance in permanent memory and all cached FvPpi pointers in
- PrivateData->Fv[] array should be fixed up to be pointed to the one in permenant
- memory.
-
- @param PrivateData Pointer to PEI_CORE_INSTANCE.
-
-**/
-VOID
-PeiReinitializeFv (
- IN PEI_CORE_INSTANCE *PrivateData
- );
-
-#endif
-