+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-Module Name:\r
-\r
- PeiApi.h\r
-\r
-Abstract:\r
-\r
- Tiano PEI intrinsic definitions. This includes all Pei Services APIs.\r
-\r
- Peims are passed in a pointer to a pointer to the PEI Services table.\r
- The PEI Services table contains pointers to the PEI services exported\r
- by the PEI Core.\r
-\r
---*/\r
-\r
-#ifndef _PEI_API_H_\r
-#define _PEI_API_H_\r
-\r
-#include "PeiHob.h"\r
-#include "EfiFirmwareFileSystem.h"\r
-#include "EfiFirmwareVolumeHeader.h"\r
-#include EFI_PPI_DEFINITION (FirmwareVolumeInfo)\r
-#include EFI_PPI_DEFINITION (FirmwareVolume)\r
-#include EFI_PPI_DEFINITION (Decompress)\r
-\r
-\r
-//\r
-// Declare forward referenced data structures\r
-//\r
-EFI_FORWARD_DECLARATION (EFI_PEI_NOTIFY_DESCRIPTOR);\r
-EFI_FORWARD_DECLARATION (EFI_PEI_SERVICES);\r
-\r
-#include EFI_PPI_DEFINITION (CpuIo)\r
-#include EFI_PPI_DEFINITION (PciCfg)\r
-#include EFI_PPI_DEFINITION (PciCfg2)\r
-#include EFI_PPI_DEFINITION (EcpPciCfg)\r
-\r
-//\r
-// PEI Specification Revision information\r
-//\r
-#if (PI_SPECIFICATION_VERSION < 0x00010000)\r
-#define PEI_SPECIFICATION_MAJOR_REVISION 0\r
-#define PEI_SPECIFICATION_MINOR_REVISION 91\r
-#else\r
-#define PEI_SPECIFICATION_MAJOR_REVISION 1\r
-#define PEI_SPECIFICATION_MINOR_REVISION 00\r
-\r
-#endif\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEIM_ENTRY_POINT)(\r
- IN EFI_FFS_FILE_HEADER * FfsHeader,\r
- IN EFI_PEI_SERVICES **PeiServices\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEIM_NOTIFY_ENTRY_POINT) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_NOTIFY_DESCRIPTOR * NotifyDescriptor,\r
- IN VOID *Ppi\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_VERIFICATION) (\r
- IN UINTN SectionAddress\r
- );\r
-\r
-//\r
-// PEI Ppi Services List Descriptors\r
-//\r
-#define EFI_PEI_PPI_DESCRIPTOR_PIC 0x00000001\r
-#define EFI_PEI_PPI_DESCRIPTOR_PPI 0x00000010\r
-#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK 0x00000020\r
-#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_DISPATCH 0x00000040\r
-#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_TYPES 0x00000060\r
-#define EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST 0x80000000\r
-\r
-typedef struct {\r
- UINTN Flags;\r
- EFI_GUID *Guid;\r
- VOID *Ppi;\r
-} EFI_PEI_PPI_DESCRIPTOR;\r
-\r
-struct _EFI_PEI_NOTIFY_DESCRIPTOR {\r
- UINTN Flags;\r
- EFI_GUID *Guid;\r
- EFI_PEIM_NOTIFY_ENTRY_POINT Notify;\r
-};\r
-\r
-\r
-#if (PI_SPECIFICATION_VERSION < 0x00010000)\r
-\r
-//\r
-// PEI PPI Services\r
-//\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_INSTALL_PPI) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_PPI_DESCRIPTOR * PpiList\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_REINSTALL_PPI) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_PPI_DESCRIPTOR * OldPpi,\r
- IN EFI_PEI_PPI_DESCRIPTOR * NewPpi\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_LOCATE_PPI) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_GUID * Guid,\r
- IN UINTN Instance,\r
- IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor,\r
- IN OUT VOID **Ppi\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_NOTIFY_PPI) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_NOTIFY_DESCRIPTOR * NotifyList\r
- );\r
-\r
-//\r
-// PEI Boot Mode Services\r
-//\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_GET_BOOT_MODE) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN OUT EFI_BOOT_MODE * BootMode\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_SET_BOOT_MODE) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_BOOT_MODE BootMode\r
- );\r
-\r
-//\r
-// PEI HOB Services\r
-//\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_GET_HOB_LIST) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN OUT VOID **HobList\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_CREATE_HOB) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN UINT16 Type,\r
- IN UINT16 Length,\r
- IN OUT VOID **Hob\r
- );\r
-\r
- //\r
- // PEI Firmware Volume Services\r
- //\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_NEXT_VOLUME) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN UINTN Instance,\r
- IN OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_NEXT_FILE) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_FV_FILETYPE SearchType,\r
- IN EFI_FIRMWARE_VOLUME_HEADER * FwVolHeader,\r
- IN OUT EFI_FFS_FILE_HEADER **FileHeader\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_SECTION_DATA) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_SECTION_TYPE SectionType,\r
- IN EFI_FFS_FILE_HEADER * FfsFileHeader,\r
- IN OUT VOID **SectionData\r
- );\r
-\r
-//\r
-// PEI Memory Services\r
-//\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_INSTALL_PEI_MEMORY) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PHYSICAL_ADDRESS MemoryBegin,\r
- IN UINT64 MemoryLength\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_ALLOCATE_PAGES) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_MEMORY_TYPE MemoryType,\r
- IN UINTN Pages,\r
- IN OUT EFI_PHYSICAL_ADDRESS * Memory\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_ALLOCATE_POOL) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN UINTN Size,\r
- OUT VOID **Buffer\r
- );\r
-\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_PEI_COPY_MEM) (\r
- IN VOID *Destination,\r
- IN VOID *Source,\r
- IN UINTN Length\r
- );\r
-\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_PEI_SET_MEM) (\r
- IN VOID *Buffer,\r
- IN UINTN Size,\r
- IN UINT8 Value\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_REPORT_STATUS_CODE) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_STATUS_CODE_TYPE Type,\r
- IN EFI_STATUS_CODE_VALUE Value,\r
- IN UINT32 Instance,\r
- IN EFI_GUID * CallerId OPTIONAL,\r
- IN EFI_STATUS_CODE_DATA * Data OPTIONAL\r
- );\r
-\r
-//\r
-// PEI Reset\r
-//\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_RESET_SYSTEM) (\r
- IN EFI_PEI_SERVICES **PeiServices\r
- );\r
-\r
-\r
-\r
-#else\r
-\r
-//\r
-// PEI PPI Services\r
-//\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_INSTALL_PPI) (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN CONST EFI_PEI_PPI_DESCRIPTOR * PpiList\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_REINSTALL_PPI) (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN CONST EFI_PEI_PPI_DESCRIPTOR * OldPpi,\r
- IN CONST EFI_PEI_PPI_DESCRIPTOR * NewPpi\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_LOCATE_PPI) (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN CONST EFI_GUID * Guid,\r
- IN UINTN Instance,\r
- IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor OPTIONAL,\r
- IN OUT VOID **Ppi\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_NOTIFY_PPI) (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN CONST EFI_PEI_NOTIFY_DESCRIPTOR * NotifyList\r
- );\r
-\r
-//\r
-// PEI Boot Mode Services\r
-//\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_GET_BOOT_MODE) (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN OUT EFI_BOOT_MODE * BootMode\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_SET_BOOT_MODE) (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_BOOT_MODE BootMode\r
- );\r
-\r
-//\r
-// PEI HOB Services\r
-//\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_GET_HOB_LIST) (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN OUT VOID **HobList\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_CREATE_HOB) (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN UINT16 Type,\r
- IN UINT16 Length,\r
- IN OUT VOID **Hob\r
- );\r
-\r
-\r
-\r
- //\r
- // PEI Firmware Volume Services\r
- //\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_NEXT_VOLUME2) (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN UINTN Instance,\r
- IN OUT EFI_PEI_FV_HANDLE *VolumeHandle \r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_NEXT_FILE2) (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_FV_FILETYPE SearchType,\r
- IN CONST EFI_PEI_FV_HANDLE FvHandle,\r
- IN OUT EFI_PEI_FILE_HANDLE *FileHandle \r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_SECTION_DATA2) (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_SECTION_TYPE SectionType,\r
- IN EFI_PEI_FILE_HANDLE FileHandle,\r
- OUT VOID **SectionData\r
- );\r
-\r
- \r
- //\r
- // PEI Memory Services\r
- //\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_INSTALL_PEI_MEMORY) (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PHYSICAL_ADDRESS MemoryBegin,\r
- IN UINT64 MemoryLength\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_ALLOCATE_PAGES) (\r
-\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_MEMORY_TYPE MemoryType,\r
- IN UINTN Pages,\r
- IN OUT EFI_PHYSICAL_ADDRESS * Memory\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_ALLOCATE_POOL) (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN UINTN Size,\r
- OUT VOID **Buffer\r
- );\r
-\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_PEI_COPY_MEM) (\r
- IN VOID *Destination,\r
- IN VOID *Source,\r
- IN UINTN Length\r
- );\r
-\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_PEI_SET_MEM) (\r
- IN VOID *Buffer,\r
- IN UINTN Size,\r
- IN UINT8 Value\r
- );\r
-\r
- //\r
- // New interfaceas added by the PI 1.0\r
- //\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_BY_NAME) (\r
- IN CONST EFI_GUID *FileName,\r
- IN EFI_PEI_FV_HANDLE VolumeHandle,\r
- OUT EFI_PEI_FILE_HANDLE *FileHandle\r
- );\r
-\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_GET_FILE_INFO) (\r
- IN EFI_PEI_FILE_HANDLE FileHandle,\r
- OUT EFI_FV_FILE_INFO *FileInfo\r
- );\r
-\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_GET_VOLUME_INFO) (\r
- IN EFI_PEI_FV_HANDLE VolumeHandle,\r
- OUT EFI_FV_INFO *VolumeInfo\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_REGISTER_FOR_SHADOW) (\r
- IN EFI_PEI_FILE_HANDLE FileHandle\r
- );\r
-\r
-//\r
-// PEI Status Code Service\r
-//\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_REPORT_STATUS_CODE) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_STATUS_CODE_TYPE Type,\r
- IN EFI_STATUS_CODE_VALUE Value,\r
- IN UINT32 Instance,\r
- IN EFI_GUID *CallerId OPTIONAL,\r
- IN EFI_STATUS_CODE_DATA *Data OPTIONAL\r
- );\r
-\r
-//\r
-// PEI Reset Service\r
-//\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_RESET_SYSTEM) (\r
- IN EFI_PEI_SERVICES **PeiServices\r
- );\r
-\r
-#endif\r
-\r
-\r
-//\r
-// EFI PEI Services Table\r
-//\r
-#define PEI_SERVICES_SIGNATURE 0x5652455320494550ULL\r
-#define PEI_SERVICES_REVISION ((PEI_SPECIFICATION_MAJOR_REVISION << 16) | (PEI_SPECIFICATION_MINOR_REVISION))\r
-typedef PEI_CPU_IO_PPI EFI_PEI_CPU_IO_PPI;\r
-\r
-\r
-struct _EFI_PEI_SERVICES {\r
- EFI_TABLE_HEADER Hdr;\r
-\r
- //\r
- // PPI Functions\r
- //\r
- EFI_PEI_INSTALL_PPI InstallPpi;\r
- EFI_PEI_REINSTALL_PPI ReInstallPpi;\r
- EFI_PEI_LOCATE_PPI LocatePpi;\r
- EFI_PEI_NOTIFY_PPI NotifyPpi;\r
-\r
- //\r
- // Boot Mode Functions\r
- //\r
- EFI_PEI_GET_BOOT_MODE GetBootMode;\r
- EFI_PEI_SET_BOOT_MODE SetBootMode;\r
-\r
- //\r
- // HOB Functions\r
- //\r
- EFI_PEI_GET_HOB_LIST GetHobList;\r
- EFI_PEI_CREATE_HOB CreateHob;\r
-\r
- //\r
- // Firmware Volume Functions\r
- //\r
-#if (PI_SPECIFICATION_VERSION < 0x00010000)\r
- EFI_PEI_FFS_FIND_NEXT_VOLUME FfsFindNextVolume;\r
- EFI_PEI_FFS_FIND_NEXT_FILE FfsFindNextFile;\r
- EFI_PEI_FFS_FIND_SECTION_DATA FfsFindSectionData;\r
-#else\r
- EFI_PEI_FFS_FIND_NEXT_VOLUME2 FfsFindNextVolume;\r
- EFI_PEI_FFS_FIND_NEXT_FILE2 FfsFindNextFile;\r
- EFI_PEI_FFS_FIND_SECTION_DATA2 FfsFindSectionData;\r
-#endif\r
- //\r
- // PEI Memory Functions\r
- //\r
- EFI_PEI_INSTALL_PEI_MEMORY InstallPeiMemory;\r
- EFI_PEI_ALLOCATE_PAGES AllocatePages;\r
- EFI_PEI_ALLOCATE_POOL AllocatePool;\r
- EFI_PEI_COPY_MEM CopyMem;\r
- EFI_PEI_SET_MEM SetMem;\r
-\r
- //\r
- // Status Code\r
- //\r
- EFI_PEI_REPORT_STATUS_CODE PeiReportStatusCode;\r
-\r
- //\r
- // Reset\r
- //\r
- EFI_PEI_RESET_SYSTEM PeiResetSystem;\r
-\r
- //\r
- // Pointer to PPI interface\r
- //\r
-#if (PI_SPECIFICATION_VERSION < 0x00010000)\r
-\r
- PEI_CPU_IO_PPI *CpuIo;\r
-#if defined (SUPPORT_DEPRECATED_PCI_CFG_PPI)\r
- PEI_PCI_CFG_PPI *PciCfg;\r
-#else\r
- ECP_PEI_PCI_CFG_PPI *PciCfg;\r
-#endif\r
-#else\r
- EFI_PEI_CPU_IO_PPI *CpuIo;\r
- EFI_PEI_PCI_CFG2_PPI *PciCfg;\r
-\r
- //\r
- // New interfaceas added by the PI 1.0\r
- //\r
- EFI_PEI_FFS_FIND_BY_NAME FfsFindFileByName;\r
- EFI_PEI_FFS_GET_FILE_INFO FfsGetFileInfo;\r
- EFI_PEI_FFS_GET_VOLUME_INFO FfsGetVolumeInfo;\r
- EFI_PEI_REGISTER_FOR_SHADOW RegisterForShadow;\r
-#endif\r
-\r
-};\r
-\r
-#if (PI_SPECIFICATION_VERSION < 0x00010000)\r
-\r
-typedef struct {\r
- UINTN BootFirmwareVolume;\r
- UINTN SizeOfCacheAsRam;\r
- EFI_PEI_PPI_DESCRIPTOR *DispatchTable;\r
-} EFI_PEI_STARTUP_DESCRIPTOR;\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *PEI_MAIN_ENTRY_POINT) (\r
- IN EFI_PEI_STARTUP_DESCRIPTOR *PeiStartupDescriptor\r
- );\r
-\r
-#else\r
-\r
-typedef struct _EFI_SEC_PEI_HAND_OFF {\r
- UINT16 DataSize;\r
- VOID *BootFirmwareVolumeBase;\r
- UINTN BootFirmwareVolumeSize;\r
- VOID *TemporaryRamBase;\r
- UINTN TemporaryRamSize;\r
- VOID *PeiTemporaryRamBase;\r
- UINTN PeiTemporaryRamSize;\r
- VOID *StackBase;\r
- UINTN StackSize;\r
-} EFI_SEC_PEI_HAND_OFF;\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *PEI_MAIN_ENTRY_POINT) (\r
- IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData,\r
- IN CONST EFI_PEI_PPI_DESCRIPTOR *PpList\r
- );\r
-\r
-#endif\r
-\r
-#endif\r