Move to directory "Include"
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2646 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
40
MdePkg/Include/Pi/PiBootMode.h
Normal file
40
MdePkg/Include/Pi/PiBootMode.h
Normal file
@@ -0,0 +1,40 @@
|
||||
/** @file
|
||||
Present the boot mode values in PI.
|
||||
|
||||
Copyright (c) 2006 - 2007, Intel Corporation
|
||||
All rights reserved. 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.
|
||||
|
||||
Module Name: PiBootMode.h
|
||||
|
||||
@par Revision Reference:
|
||||
Version 1.0.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __PI_BOOT_MODE_H__
|
||||
#define __PI_BOOT_MODE_H__
|
||||
|
||||
typedef UINT32 EFI_BOOT_MODE;
|
||||
|
||||
//
|
||||
// 0x21 - 0xf..f are reserved.
|
||||
//
|
||||
#define BOOT_WITH_FULL_CONFIGURATION 0x00
|
||||
#define BOOT_WITH_MINIMAL_CONFIGURATION 0x01
|
||||
#define BOOT_ASSUMING_NO_CONFIGURATION_CHANGES 0x02
|
||||
#define BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS 0x03
|
||||
#define BOOT_WITH_DEFAULT_SETTINGS 0x04
|
||||
#define BOOT_ON_S4_RESUME 0x05
|
||||
#define BOOT_ON_S5_RESUME 0x06
|
||||
#define BOOT_ON_S2_RESUME 0x10
|
||||
#define BOOT_ON_S3_RESUME 0x11
|
||||
#define BOOT_ON_FLASH_UPDATE 0x12
|
||||
#define BOOT_IN_RECOVERY_MODE 0x20
|
||||
|
||||
#endif
|
46
MdePkg/Include/Pi/PiDependency.h
Normal file
46
MdePkg/Include/Pi/PiDependency.h
Normal file
@@ -0,0 +1,46 @@
|
||||
/** @file
|
||||
Present the dependency expression values in PI.
|
||||
|
||||
Copyright (c) 2006 - 2007, Intel Corporation
|
||||
All rights reserved. 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.
|
||||
|
||||
Module Name: PiDependency.h
|
||||
|
||||
@par Revision Reference:
|
||||
Version 1.0.
|
||||
|
||||
**/
|
||||
#ifndef __PI_DEPENDENCY_H__
|
||||
#define __PI_DEPENDENCY_H__
|
||||
|
||||
//
|
||||
// If present, this must be the first and only opcode
|
||||
//
|
||||
#define EFI_DEP_BEFORE 0x00
|
||||
|
||||
//
|
||||
// If present, this must be the first and only opcode
|
||||
//
|
||||
#define EFI_DEP_AFTER 0x01
|
||||
|
||||
#define EFI_DEP_PUSH 0x02
|
||||
#define EFI_DEP_AND 0x03
|
||||
#define EFI_DEP_OR 0x04
|
||||
#define EFI_DEP_NOT 0x05
|
||||
#define EFI_DEP_TRUE 0x06
|
||||
#define EFI_DEP_FALSE 0x07
|
||||
#define EFI_DEP_END 0x08
|
||||
|
||||
|
||||
//
|
||||
// If present, this must be the first opcode.
|
||||
//
|
||||
#define EFI_DEP_SOR 0x09
|
||||
|
||||
#endif
|
450
MdePkg/Include/Pi/PiDxeCis.h
Normal file
450
MdePkg/Include/Pi/PiDxeCis.h
Normal file
@@ -0,0 +1,450 @@
|
||||
/** @file
|
||||
Include file matches things in PI.
|
||||
|
||||
Copyright (c) 2006 - 2007, Intel Corporation
|
||||
All rights reserved. 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.
|
||||
|
||||
Module Name: PiDxeCis.h
|
||||
|
||||
@par Revision Reference:
|
||||
Version 1.0.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __PI_DXECIS_H__
|
||||
#define __PI_DXECIS_H__
|
||||
|
||||
#include <Pi/PiMultiPhase.h>
|
||||
|
||||
//
|
||||
// Global Coherencey Domain types
|
||||
//
|
||||
typedef enum {
|
||||
EfiGcdMemoryTypeNonExistent,
|
||||
EfiGcdMemoryTypeReserved,
|
||||
EfiGcdMemoryTypeSystemMemory,
|
||||
EfiGcdMemoryTypeMemoryMappedIo,
|
||||
EfiGcdMemoryTypeMaximum
|
||||
} EFI_GCD_MEMORY_TYPE;
|
||||
|
||||
|
||||
typedef enum {
|
||||
EfiGcdIoTypeNonExistent,
|
||||
EfiGcdIoTypeReserved,
|
||||
EfiGcdIoTypeIo,
|
||||
EfiGcdIoTypeMaximum
|
||||
} EFI_GCD_IO_TYPE;
|
||||
|
||||
|
||||
typedef enum {
|
||||
EfiGcdAllocateAnySearchBottomUp,
|
||||
EfiGcdAllocateMaxAddressSearchBottomUp,
|
||||
EfiGcdAllocateAddress,
|
||||
EfiGcdAllocateAnySearchTopDown,
|
||||
EfiGcdAllocateMaxAddressSearchTopDown,
|
||||
EfiGcdMaxAllocateType
|
||||
} EFI_GCD_ALLOCATE_TYPE;
|
||||
|
||||
|
||||
typedef struct {
|
||||
EFI_PHYSICAL_ADDRESS BaseAddress;
|
||||
UINT64 Length;
|
||||
UINT64 Capabilities;
|
||||
UINT64 Attributes;
|
||||
EFI_GCD_MEMORY_TYPE GcdMemoryType;
|
||||
EFI_HANDLE ImageHandle;
|
||||
EFI_HANDLE DeviceHandle;
|
||||
} EFI_GCD_MEMORY_SPACE_DESCRIPTOR;
|
||||
|
||||
|
||||
typedef struct {
|
||||
EFI_PHYSICAL_ADDRESS BaseAddress;
|
||||
UINT64 Length;
|
||||
EFI_GCD_IO_TYPE GcdIoType;
|
||||
EFI_HANDLE ImageHandle;
|
||||
EFI_HANDLE DeviceHandle;
|
||||
} EFI_GCD_IO_SPACE_DESCRIPTOR;
|
||||
|
||||
|
||||
/**
|
||||
Adds reserved memory, system memory, or memory-mapped I/O resources to the
|
||||
global coherency domain of the processor.
|
||||
|
||||
@param GcdMemoryType Memory type of the memory space.
|
||||
@param BaseAddress Base address of the memory space.
|
||||
@param Length Length of the memory space.
|
||||
@param Capabilities alterable attributes of the memory space.
|
||||
|
||||
@retval EFI_SUCCESS Merged this memory space into GCD map.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_ADD_MEMORY_SPACE) (
|
||||
IN EFI_GCD_MEMORY_TYPE GcdMemoryType,
|
||||
IN EFI_PHYSICAL_ADDRESS BaseAddress,
|
||||
IN UINT64 Length,
|
||||
IN UINT64 Capabilities
|
||||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Allocates nonexistent memory, reserved memory, system memory, or memorymapped
|
||||
I/O resources from the global coherency domain of the processor.
|
||||
|
||||
@param GcdAllocateType The type of allocate operation
|
||||
@param GcdMemoryType The desired memory type
|
||||
@param Alignment Align with 2^Alignment
|
||||
@param Length Length to allocate
|
||||
@param BaseAddress Base address to allocate
|
||||
@param Imagehandle The image handle consume the allocated space.
|
||||
@param DeviceHandle The device handle consume the allocated space.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
||||
@retval EFI_NOT_FOUND No descriptor contains the desired space.
|
||||
@retval EFI_SUCCESS Memory space successfully allocated.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_ALLOCATE_MEMORY_SPACE) (
|
||||
IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType,
|
||||
IN EFI_GCD_MEMORY_TYPE GcdMemoryType,
|
||||
IN UINTN Alignment,
|
||||
IN UINT64 Length,
|
||||
IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress,
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_HANDLE DeviceHandle OPTIONAL
|
||||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Frees nonexistent memory, reserved memory, system memory, or memory-mapped
|
||||
I/O resources from the global coherency domain of the processor.
|
||||
|
||||
@param BaseAddress Base address of the segment.
|
||||
@param Length Length of the segment.
|
||||
|
||||
@retval EFI_SUCCESS Space successfully freed.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FREE_MEMORY_SPACE) (
|
||||
IN EFI_PHYSICAL_ADDRESS BaseAddress,
|
||||
IN UINT64 Length
|
||||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Removes reserved memory, system memory, or memory-mapped I/O resources from
|
||||
the global coherency domain of the processor.
|
||||
|
||||
@param BaseAddress Base address of the memory space.
|
||||
@param Length Length of the memory space.
|
||||
|
||||
@retval EFI_SUCCESS Successfully remove a segment of memory space.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_REMOVE_MEMORY_SPACE) (
|
||||
IN EFI_PHYSICAL_ADDRESS BaseAddress,
|
||||
IN UINT64 Length
|
||||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Retrieves the descriptor for a memory region containing a specified address.
|
||||
|
||||
@param BaseAddress Specified start address
|
||||
@param Descriptor Specified length
|
||||
|
||||
@retval EFI_INVALID_PARAMETER Invalid parameter
|
||||
@retval EFI_SUCCESS Successfully get memory space descriptor.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_GET_MEMORY_SPACE_DESCRIPTOR) (
|
||||
IN EFI_PHYSICAL_ADDRESS BaseAddress,
|
||||
OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR *Descriptor
|
||||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Modifies the attributes for a memory region in the global coherency domain of the
|
||||
processor.
|
||||
|
||||
@param BaseAddress Specified start address
|
||||
@param Length Specified length
|
||||
@param Attributes Specified attributes
|
||||
|
||||
@retval EFI_SUCCESS Successfully set attribute of a segment of memory space.
|
||||
|
||||
**/
|
||||
typedef
|
||||
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_SET_MEMORY_SPACE_ATTRIBUTES) (
|
||||
IN EFI_PHYSICAL_ADDRESS BaseAddress,
|
||||
IN UINT64 Length,
|
||||
IN UINT64 Attributes
|
||||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Returns a map of the memory resources in the global coherency domain of the
|
||||
processor.
|
||||
|
||||
@param NumberOfDescriptors Number of descriptors.
|
||||
@param MemorySpaceMap Descriptor array
|
||||
|
||||
@retval EFI_INVALID_PARAMETER Invalid parameter
|
||||
@retval EFI_OUT_OF_RESOURCES No enough buffer to allocate
|
||||
@retval EFI_SUCCESS Successfully get memory space map.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_GET_MEMORY_SPACE_MAP) (
|
||||
OUT UINTN *NumberOfDescriptors,
|
||||
OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR **MemorySpaceMap
|
||||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Adds reserved I/O or I/O resources to the global coherency domain of the processor.
|
||||
|
||||
@param GcdIoType IO type of the segment.
|
||||
@param BaseAddress Base address of the segment.
|
||||
@param Length Length of the segment.
|
||||
|
||||
@retval EFI_SUCCESS Merged this segment into GCD map.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_ADD_IO_SPACE) (
|
||||
IN EFI_GCD_IO_TYPE GcdIoType,
|
||||
IN EFI_PHYSICAL_ADDRESS BaseAddress,
|
||||
IN UINT64 Length
|
||||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Allocates nonexistent I/O, reserved I/O, or I/O resources from the global coherency
|
||||
domain of the processor.
|
||||
|
||||
@param GcdAllocateType The type of allocate operation
|
||||
@param GcdIoType The desired IO type
|
||||
@param Alignment Align with 2^Alignment
|
||||
@param Length Length to allocate
|
||||
@param BaseAddress Base address to allocate
|
||||
@param Imagehandle The image handle consume the allocated space.
|
||||
@param DeviceHandle The device handle consume the allocated space.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
||||
@retval EFI_NOT_FOUND No descriptor contains the desired space.
|
||||
@retval EFI_SUCCESS IO space successfully allocated.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_ALLOCATE_IO_SPACE) (
|
||||
IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType,
|
||||
IN EFI_GCD_IO_TYPE GcdIoType,
|
||||
IN UINTN Alignment,
|
||||
IN UINT64 Length,
|
||||
IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress,
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_HANDLE DeviceHandle OPTIONAL
|
||||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Frees nonexistent I/O, reserved I/O, or I/O resources from the global coherency
|
||||
domain of the processor.
|
||||
|
||||
@param BaseAddress Base address of the segment.
|
||||
@param Length Length of the segment.
|
||||
|
||||
@retval EFI_SUCCESS Space successfully freed.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FREE_IO_SPACE) (
|
||||
IN EFI_PHYSICAL_ADDRESS BaseAddress,
|
||||
IN UINT64 Length
|
||||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Removes reserved I/O or I/O resources from the global coherency domain of the
|
||||
processor.
|
||||
|
||||
@param BaseAddress Base address of the segment.
|
||||
@param Length Length of the segment.
|
||||
|
||||
@retval EFI_SUCCESS Successfully removed a segment of IO space.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_REMOVE_IO_SPACE) (
|
||||
IN EFI_PHYSICAL_ADDRESS BaseAddress,
|
||||
IN UINT64 Length
|
||||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Retrieves the descriptor for an I/O region containing a specified address.
|
||||
|
||||
@param BaseAddress Specified start address
|
||||
@param Descriptor Specified length
|
||||
|
||||
@retval EFI_INVALID_PARAMETER Descriptor is NULL.
|
||||
@retval EFI_SUCCESS Successfully get the IO space descriptor.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_GET_IO_SPACE_DESCRIPTOR) (
|
||||
IN EFI_PHYSICAL_ADDRESS BaseAddress,
|
||||
OUT EFI_GCD_IO_SPACE_DESCRIPTOR *Descriptor
|
||||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Returns a map of the I/O resources in the global coherency domain of the processor.
|
||||
|
||||
@param NumberOfDescriptors Number of descriptors.
|
||||
@param MemorySpaceMap Descriptor array
|
||||
|
||||
@retval EFI_INVALID_PARAMETER Invalid parameter
|
||||
@retval EFI_OUT_OF_RESOURCES No enough buffer to allocate
|
||||
@retval EFI_SUCCESS Successfully get IO space map.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_GET_IO_SPACE_MAP) (
|
||||
OUT UINTN *NumberOfDescriptors,
|
||||
OUT EFI_GCD_IO_SPACE_DESCRIPTOR **IoSpaceMap
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Loads and executed DXE drivers from firmware volumes.
|
||||
|
||||
@return Status code
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_DISPATCH) (VOID)
|
||||
;
|
||||
|
||||
/**
|
||||
Clears the Schedule on Request (SOR) flag for a component that is stored in a firmware volume.
|
||||
|
||||
@param FirmwareVolumeHandle The handle of the firmware volume that contains the file specified by FileName.
|
||||
@param DriverName A pointer to the name of the file in a firmware volume.
|
||||
|
||||
@return Status code
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_SCHEDULE) (
|
||||
IN EFI_HANDLE FirmwareVolumeHandle,
|
||||
IN EFI_GUID *DriverName
|
||||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Promotes a file stored in a firmware volume from the untrusted to the trusted state.
|
||||
|
||||
@param FirmwareVolumeHandle The handle of the firmware volume that contains the file specified by FileName.
|
||||
@param DriverName A pointer to the name of the file in a firmware volume.
|
||||
|
||||
@return Status code
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TRUST) (
|
||||
IN EFI_HANDLE FirmwareVolumeHandle,
|
||||
IN EFI_GUID *DriverName
|
||||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Creates a firmware volume handle for a firmware volume that is present in system memory.
|
||||
|
||||
@param FirmwareVolumeHeader A pointer to the header of the firmware volume.
|
||||
@param Size The size, in bytes, of the firmware volume.
|
||||
@param FirmwareVolumeHandle On output, a pointer to the created handle.
|
||||
|
||||
@return Status code
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PROCESS_FIRMWARE_VOLUME) (
|
||||
IN VOID *FvHeader,
|
||||
IN UINTN Size,
|
||||
OUT EFI_HANDLE *FirmwareVolumeHandle
|
||||
)
|
||||
;
|
||||
|
||||
//
|
||||
// DXE Services Table
|
||||
//
|
||||
#define DXE_SERVICES_SIGNATURE 0x565245535f455844
|
||||
#define DXE_SERVICES_REVISION ((1<<16) | (00)
|
||||
|
||||
typedef struct {
|
||||
EFI_TABLE_HEADER Hdr;
|
||||
|
||||
//
|
||||
// Global Coherency Domain Services
|
||||
//
|
||||
EFI_ADD_MEMORY_SPACE AddMemorySpace;
|
||||
EFI_ALLOCATE_MEMORY_SPACE AllocateMemorySpace;
|
||||
EFI_FREE_MEMORY_SPACE FreeMemorySpace;
|
||||
EFI_REMOVE_MEMORY_SPACE RemoveMemorySpace;
|
||||
EFI_GET_MEMORY_SPACE_DESCRIPTOR GetMemorySpaceDescriptor;
|
||||
EFI_SET_MEMORY_SPACE_ATTRIBUTES SetMemorySpaceAttributes;
|
||||
EFI_GET_MEMORY_SPACE_MAP GetMemorySpaceMap;
|
||||
EFI_ADD_IO_SPACE AddIoSpace;
|
||||
EFI_ALLOCATE_IO_SPACE AllocateIoSpace;
|
||||
EFI_FREE_IO_SPACE FreeIoSpace;
|
||||
EFI_REMOVE_IO_SPACE RemoveIoSpace;
|
||||
EFI_GET_IO_SPACE_DESCRIPTOR GetIoSpaceDescriptor;
|
||||
EFI_GET_IO_SPACE_MAP GetIoSpaceMap;
|
||||
|
||||
//
|
||||
// Dispatcher Services
|
||||
//
|
||||
EFI_DISPATCH Dispatch;
|
||||
EFI_SCHEDULE Schedule;
|
||||
EFI_TRUST Trust;
|
||||
//
|
||||
// Service to process a single firmware volume found in a capsule
|
||||
//
|
||||
EFI_PROCESS_FIRMWARE_VOLUME ProcessFirmwareVolume;
|
||||
} DXE_SERVICES;
|
||||
|
||||
typedef DXE_SERVICES EFI_DXE_SERVICES;
|
||||
|
||||
#endif
|
206
MdePkg/Include/Pi/PiFirmwareFile.h
Normal file
206
MdePkg/Include/Pi/PiFirmwareFile.h
Normal file
@@ -0,0 +1,206 @@
|
||||
/** @file
|
||||
The firmware file related definitions in PI.
|
||||
|
||||
Copyright (c) 2006 - 2007, Intel Corporation
|
||||
All rights reserved. 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.
|
||||
|
||||
Module Name: PiFirmwareFile.h
|
||||
|
||||
@par Revision Reference:
|
||||
Version 1.0.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __PI_FIRMWARE_FILE_H__
|
||||
#define __PI_FIRMWARE_FILE_H__
|
||||
|
||||
//
|
||||
// Used to verify the integrity of the file.
|
||||
//
|
||||
typedef union {
|
||||
struct {
|
||||
UINT8 Header;
|
||||
UINT8 File;
|
||||
} Checksum;
|
||||
UINT16 Checksum16;
|
||||
} EFI_FFS_INTEGRITY_CHECK;
|
||||
|
||||
typedef UINT8 EFI_FV_FILETYPE;
|
||||
typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;
|
||||
typedef UINT8 EFI_FFS_FILE_STATE;
|
||||
|
||||
//
|
||||
// FFS File Attributes.
|
||||
//
|
||||
#define FFS_ATTRIB_FIXED 0x04
|
||||
#define FFS_ATTRIB_DATA_ALIGNMENT 0x38
|
||||
#define FFS_ATTRIB_CHECKSUM 0x40
|
||||
|
||||
//
|
||||
// FFS File State Bits.
|
||||
//
|
||||
#define EFI_FILE_HEADER_CONSTRUCTION 0x01
|
||||
#define EFI_FILE_HEADER_VALID 0x02
|
||||
#define EFI_FILE_DATA_VALID 0x04
|
||||
#define EFI_FILE_MARKED_FOR_UPDATE 0x08
|
||||
#define EFI_FILE_DELETED 0x10
|
||||
#define EFI_FILE_HEADER_INVALID 0x20
|
||||
|
||||
|
||||
//
|
||||
// Each file begins with the header that describe the
|
||||
// contents and state of the files.
|
||||
//
|
||||
typedef struct {
|
||||
EFI_GUID Name;
|
||||
EFI_FFS_INTEGRITY_CHECK IntegrityCheck;
|
||||
EFI_FV_FILETYPE Type;
|
||||
EFI_FFS_FILE_ATTRIBUTES Attributes;
|
||||
UINT8 Size[3];
|
||||
EFI_FFS_FILE_STATE State;
|
||||
} EFI_FFS_FILE_HEADER;
|
||||
|
||||
|
||||
typedef UINT8 EFI_SECTION_TYPE;
|
||||
|
||||
//
|
||||
// Pseudo type. It is
|
||||
// used as a wild card when retrieving sections. The section
|
||||
// type EFI_SECTION_ALL matches all section types.
|
||||
//
|
||||
#define EFI_SECTION_ALL 0x00
|
||||
|
||||
//
|
||||
// Encapsulation section Type values
|
||||
//
|
||||
#define EFI_SECTION_COMPRESSION 0x01
|
||||
|
||||
#define EFI_SECTION_GUID_DEFINED 0x02
|
||||
|
||||
//
|
||||
// Leaf section Type values
|
||||
//
|
||||
#define EFI_SECTION_PE32 0x10
|
||||
#define EFI_SECTION_PIC 0x11
|
||||
#define EFI_SECTION_TE 0x12
|
||||
#define EFI_SECTION_DXE_DEPEX 0x13
|
||||
#define EFI_SECTION_VERSION 0x14
|
||||
#define EFI_SECTION_USER_INTERFACE 0x15
|
||||
#define EFI_SECTION_COMPATIBILITY16 0x16
|
||||
#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE 0x17
|
||||
#define EFI_SECTION_FREEFORM_SUBTYPE_GUID 0x18
|
||||
#define EFI_SECTION_RAW 0x19
|
||||
#define EFI_SECTION_PEI_DEPEX 0x1B
|
||||
|
||||
typedef struct {
|
||||
UINT8 Size[3];
|
||||
EFI_SECTION_TYPE Type;
|
||||
} EFI_COMMON_SECTION_HEADER;
|
||||
|
||||
//
|
||||
// Leaf section type that contains an
|
||||
// IA-32 16-bit executable image.
|
||||
//
|
||||
typedef EFI_COMMON_SECTION_HEADER EFI_COMPATIBILITY16_SECTION;
|
||||
|
||||
//
|
||||
// CompressionType of EFI_COMPRESSION_SECTION.
|
||||
//
|
||||
#define EFI_NOT_COMPRESSED 0x00
|
||||
#define EFI_STANDARD_COMPRESSION 0x01
|
||||
//
|
||||
// An encapsulation section type in which the
|
||||
// section data is compressed.
|
||||
//
|
||||
typedef struct {
|
||||
EFI_COMMON_SECTION_HEADER CommonHeader;
|
||||
UINT32 UncompressedLength;
|
||||
UINT8 CompressionType;
|
||||
} EFI_COMPRESSION_SECTION;
|
||||
|
||||
//
|
||||
// Leaf section which could be used to determine the dispatch order of DXEs.
|
||||
//
|
||||
typedef EFI_COMMON_SECTION_HEADER EFI_DXE_DEPEX_SECTION;
|
||||
|
||||
//
|
||||
// Leaf section witch contains a PI FV.
|
||||
//
|
||||
typedef EFI_COMMON_SECTION_HEADER EFI_FIRMWARE_VOLUME_IMAGE_SECTION;
|
||||
|
||||
//
|
||||
// Leaf section which contains a single GUID.
|
||||
//
|
||||
typedef struct {
|
||||
EFI_COMMON_SECTION_HEADER CommonHeader;
|
||||
EFI_GUID SubTypeGuid;
|
||||
} EFI_FREEFORM_SUBTYPE_GUID_SECTION;
|
||||
|
||||
//
|
||||
// Attributes of EFI_GUID_DEFINED_SECTION
|
||||
//
|
||||
#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED 0x01
|
||||
#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID 0x02
|
||||
//
|
||||
// Leaf section which is encapsulation defined by specific GUID
|
||||
//
|
||||
typedef struct {
|
||||
EFI_COMMON_SECTION_HEADER CommonHeader;
|
||||
EFI_GUID SectionDefinitionGuid;
|
||||
UINT16 DataOffset;
|
||||
UINT16 Attributes;
|
||||
} EFI_GUID_DEFINED_SECTION;
|
||||
|
||||
//
|
||||
// Leaf section which contains PE32+ image.
|
||||
//
|
||||
typedef EFI_COMMON_SECTION_HEADER EFI_PE32_SECTION;
|
||||
|
||||
|
||||
//
|
||||
// Leaf section which used to determine the dispatch order of PEIMs.
|
||||
//
|
||||
typedef EFI_COMMON_SECTION_HEADER EFI_PEI_DEPEX_SECTION;
|
||||
|
||||
//
|
||||
// Leaf section which constains the position-independent-code image.
|
||||
//
|
||||
typedef EFI_COMMON_SECTION_HEADER EFI_TE_SECTION;
|
||||
|
||||
//
|
||||
// Leaf section which contains an array of zero or more bytes.
|
||||
//
|
||||
typedef EFI_COMMON_SECTION_HEADER EFI_RAW_SECTION;
|
||||
|
||||
//
|
||||
// Leaf section which contains a unicode string that
|
||||
// is human readable file name.
|
||||
//
|
||||
typedef struct {
|
||||
EFI_COMMON_SECTION_HEADER CommonHeader;
|
||||
|
||||
//
|
||||
// Array of unicode string.
|
||||
//
|
||||
CHAR16 FileNameString[1];
|
||||
} EFI_USER_INTERFACE_SECTION;
|
||||
|
||||
|
||||
//
|
||||
// Leaf section which contains a numeric build number and
|
||||
// an optional unicode string that represent the file revision.
|
||||
//
|
||||
typedef struct {
|
||||
EFI_COMMON_SECTION_HEADER CommonHeader;
|
||||
UINT16 BuildNumber;
|
||||
CHAR16 VersionString[1];
|
||||
} EFI_VERSION_SECTION;
|
||||
|
||||
#endif
|
||||
|
140
MdePkg/Include/Pi/PiFirmwareVolume.h
Normal file
140
MdePkg/Include/Pi/PiFirmwareVolume.h
Normal file
@@ -0,0 +1,140 @@
|
||||
/** @file
|
||||
The firmware volume related definitions in PI.
|
||||
|
||||
Copyright (c) 2006 - 2007, Intel Corporation
|
||||
All rights reserved. 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.
|
||||
|
||||
Module Name: PiFirmwareVolume.h
|
||||
|
||||
@par Revision Reference:
|
||||
Version 1.0.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __PI_FIRMWAREVOLUME_H__
|
||||
#define __PI_FIRMWAREVOLUME_H__
|
||||
|
||||
//
|
||||
// EFI_FV_FILE_ATTRIBUTES
|
||||
//
|
||||
typedef UINT32 EFI_FV_FILE_ATTRIBUTES;
|
||||
|
||||
//
|
||||
// Value of EFI_FV_FILE_ATTRIBUTES.
|
||||
//
|
||||
#define EFI_FV_FILE_ATTRIB_ALIGNMENT 0x0000001F
|
||||
#define EFI_FV_FILE_ATTRIB_FIXED 0x00000100
|
||||
#define EFI_FV_FILE_ATTRIB_MEMORY_MAPPED 0x00000200
|
||||
|
||||
typedef UINT32 EFI_FVB_ATTRIBUTES;
|
||||
|
||||
//
|
||||
// Attributes bit definitions
|
||||
//
|
||||
#define EFI_FVB2_READ_DISABLED_CAP 0x00000001
|
||||
#define EFI_FVB2_READ_ENABLED_CAP 0x00000002
|
||||
#define EFI_FVB2_READ_STATUS 0x00000004
|
||||
#define EFI_FVB2_WRITE_DISABLED_CAP 0x00000008
|
||||
#define EFI_FVB2_WRITE_ENABLED_CAP 0x00000010
|
||||
#define EFI_FVB2_WRITE_STATUS 0x00000020
|
||||
#define EFI_FVB2_LOCK_CAP 0x00000040
|
||||
#define EFI_FVB2_LOCK_STATUS 0x00000080
|
||||
#define EFI_FVB2_STICKY_WRITE 0x00000200
|
||||
#define EFI_FVB2_MEMORY_MAPPED 0x00000400
|
||||
#define EFI_FVB2_ERASE_POLARITY 0x00000800
|
||||
#define EFI_FVB2_READ_LOCK_CAP 0x00001000
|
||||
#define EFI_FVB2_READ_LOCK_STATUS 0x00002000
|
||||
#define EFI_FVB2_WRITE_LOCK_CAP 0x00004000
|
||||
#define EFI_FVB2_WRITE_LOCK_STATUS 0x00008000
|
||||
#define EFI_FVB2_ALIGNMENT 0x001F0000
|
||||
#define EFI_FVB2_ALIGNMENT_1 0x00000000
|
||||
#define EFI_FVB2_ALIGNMENT_2 0x00010000
|
||||
#define EFI_FVB2_ALIGNMENT_4 0x00020000
|
||||
#define EFI_FVB2_ALIGNMENT_8 0x00030000
|
||||
#define EFI_FVB2_ALIGNMENT_16 0x00040000
|
||||
#define EFI_FVB2_ALIGNMENT_32 0x00050000
|
||||
#define EFI_FVB2_ALIGNMENT_64 0x00060000
|
||||
#define EFI_FVB2_ALIGNMENT_128 0x00070000
|
||||
#define EFI_FVB2_ALIGNMENT_256 0x00080000
|
||||
#define EFI_FVB2_ALIGNMENT_512 0x00090000
|
||||
#define EFI_FVB2_ALIGNMENT_1K 0x000A0000
|
||||
#define EFI_FVB2_ALIGNMENT_2K 0x000B0000
|
||||
#define EFI_FVB2_ALIGNMENT_4K 0x000C0000
|
||||
#define EFI_FVB2_ALIGNMENT_8K 0x000D0000
|
||||
#define EFI_FVB2_ALIGNMENT_16K 0x000E0000
|
||||
#define EFI_FVB2_ALIGNMENT_32K 0x000F0000
|
||||
#define EFI_FVB2_ALIGNMENT_64K 0x00100000
|
||||
#define EFI_FVB2_ALIGNMENT_128K 0x00110000
|
||||
#define EFI_FVB2_ALIGNMENT_256K 0x00120000
|
||||
#define EFI_FVB2_ALIGNMNET_512K 0x00130000
|
||||
#define EFI_FVB2_ALIGNMENT_1M 0x00140000
|
||||
#define EFI_FVB2_ALIGNMENT_2M 0x00150000
|
||||
#define EFI_FVB2_ALIGNMENT_4M 0x00160000
|
||||
#define EFI_FVB2_ALIGNMENT_8M 0x00170000
|
||||
#define EFI_FVB2_ALIGNMENT_16M 0x00180000
|
||||
#define EFI_FVB2_ALIGNMENT_32M 0x00190000
|
||||
#define EFI_FVB2_ALIGNMENT_64M 0x001A0000
|
||||
#define EFI_FVB2_ALIGNMENT_128M 0x001B0000
|
||||
#define EFI_FVB2_ALIGNMENT_256M 0x001C0000
|
||||
#define EFI_FVB2_ALIGNMENT_512M 0x001D0000
|
||||
#define EFI_FVB2_ALIGNMENT_1G 0x001E0000
|
||||
#define EFI_FVB2_ALIGNMENT_2G 0x001F0000
|
||||
|
||||
|
||||
typedef struct {
|
||||
UINT32 NumBlocks;
|
||||
UINT32 Length;
|
||||
} EFI_FV_BLOCK_MAP_ENTRY;
|
||||
|
||||
//
|
||||
// Describes the features and layout of the firmware volume.
|
||||
//
|
||||
typedef struct {
|
||||
UINT8 ZeroVector[16];
|
||||
EFI_GUID FileSystemGuid;
|
||||
UINT64 FvLength;
|
||||
UINT32 Signature;
|
||||
EFI_FVB_ATTRIBUTES Attributes;
|
||||
UINT16 HeaderLength;
|
||||
UINT16 Checksum;
|
||||
UINT16 ExtHeaderOffset;
|
||||
UINT8 Reserved[1];
|
||||
UINT8 Revision;
|
||||
EFI_FV_BLOCK_MAP_ENTRY BlockMap[1];
|
||||
} EFI_FIRMWARE_VOLUME_HEADER;
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Extension header pointed by ExtHeaderOffset of volume header.
|
||||
//
|
||||
typedef struct {
|
||||
EFI_GUID FvName;
|
||||
UINT32 ExtHeaderSize;
|
||||
} EFI_FIRMWARE_VOLUME_EXT_HEADER;
|
||||
|
||||
typedef struct {
|
||||
UINT16 ExtEntrySize;
|
||||
UINT16 ExtEntryType;
|
||||
} EFI_FIRMWARE_VOLUME_EXT_ENTRY;
|
||||
|
||||
#define EFI_FV_EXT_TYPE_OEM_TYPE 0x01
|
||||
typedef struct {
|
||||
EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
|
||||
UINT32 TypeMask;
|
||||
|
||||
//
|
||||
// Array of GUIDs.
|
||||
// Each GUID represents an OEM file type.
|
||||
//
|
||||
EFI_GUID Types[1];
|
||||
} EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE;
|
||||
|
||||
|
||||
#endif
|
258
MdePkg/Include/Pi/PiHob.h
Normal file
258
MdePkg/Include/Pi/PiHob.h
Normal file
@@ -0,0 +1,258 @@
|
||||
/* @file
|
||||
HOB related definitions in PI.
|
||||
|
||||
Copyright (c) 2006 - 2007, Intel Corporation
|
||||
All rights reserved. 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.
|
||||
|
||||
Module Name: PiHob.h
|
||||
|
||||
@par Revision Reference:
|
||||
Version 1.0.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __PI_HOB_H__
|
||||
#define __PI_HOB_H__
|
||||
|
||||
//
|
||||
// HobType of EFI_HOB_GENERIC_HEADER.
|
||||
//
|
||||
#define EFI_HOB_TYPE_HANDOFF 0x0001
|
||||
#define EFI_HOB_TYPE_MEMORY_ALLOCATION 0x0002
|
||||
#define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR 0x0003
|
||||
#define EFI_HOB_TYPE_GUID_EXTENSION 0x0004
|
||||
#define EFI_HOB_TYPE_FV 0x0005
|
||||
#define EFI_HOB_TYPE_CPU 0x0006
|
||||
#define EFI_HOB_TYPE_MEMORY_POOL 0x0007
|
||||
#define EFI_HOB_TYPE_FV2 0x0009
|
||||
#define EFI_HOB_TYPE_LOAD_PEIM 0x000A
|
||||
#define EFI_HOB_TYPE_UNUSED 0xFFFE
|
||||
#define EFI_HOB_TYPE_END_OF_HOB_LIST 0xFFFF
|
||||
|
||||
//
|
||||
// Describes the format and size of the data inside the HOB.
|
||||
// All HOBs must contain this generic HOB header.
|
||||
//
|
||||
typedef struct _EFI_HOB_GENERIC_HEADER {
|
||||
UINT16 HobType;
|
||||
UINT16 HobLength;
|
||||
UINT32 Reserved;
|
||||
} EFI_HOB_GENERIC_HEADER;
|
||||
|
||||
|
||||
//
|
||||
// Value of version ofinEFI_HOB_HANDOFF_INFO_TABLE.
|
||||
//
|
||||
#define EFI_HOB_HANDOFF_TABLE_VERSION 0x0009
|
||||
//
|
||||
// Contains general state information used by the HOB producer phase.
|
||||
// This HOB must be the first one in the HOB list.
|
||||
//
|
||||
typedef struct _EFI_HOB_HANDOFF_INFO_TABLE {
|
||||
EFI_HOB_GENERIC_HEADER Header;
|
||||
UINT32 Version;
|
||||
EFI_BOOT_MODE BootMode;
|
||||
EFI_PHYSICAL_ADDRESS EfiMemoryTop;
|
||||
EFI_PHYSICAL_ADDRESS EfiMemoryBottom;
|
||||
EFI_PHYSICAL_ADDRESS EfiFreeMemoryTop;
|
||||
EFI_PHYSICAL_ADDRESS EfiFreeMemoryBottom;
|
||||
EFI_PHYSICAL_ADDRESS EfiEndOfHobList;
|
||||
} EFI_HOB_HANDOFF_INFO_TABLE;
|
||||
|
||||
|
||||
typedef struct _EFI_HOB_MEMORY_ALLOCATION_HEADER {
|
||||
EFI_GUID Name;
|
||||
EFI_PHYSICAL_ADDRESS MemoryBaseAddress;
|
||||
UINT64 MemoryLength;
|
||||
EFI_MEMORY_TYPE MemoryType;
|
||||
|
||||
//
|
||||
// Padding for Itanium processor family
|
||||
//
|
||||
UINT8 Reserved[4];
|
||||
} EFI_HOB_MEMORY_ALLOCATION_HEADER;
|
||||
|
||||
//
|
||||
// Describes all memory ranges used during the HOB producer
|
||||
// phase that exist outside the HOB list. This HOB type
|
||||
// describes how memory is used,
|
||||
// not the physical attributes of memory.
|
||||
//
|
||||
typedef struct _EFI_HOB_MEMORY_ALLOCATION {
|
||||
EFI_HOB_GENERIC_HEADER Header;
|
||||
EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor;
|
||||
//
|
||||
// Additional data pertaining to the <20><>Name<6D><65> Guid memory
|
||||
// may go here.
|
||||
//
|
||||
} EFI_HOB_MEMORY_ALLOCATION;
|
||||
|
||||
|
||||
//
|
||||
// Describes the memory stack that is produced by the HOB producer
|
||||
// phase and upon which all postmemory-installed executable
|
||||
// content in the HOB producer phase is executing.
|
||||
//
|
||||
typedef struct _EFI_HOB_MEMORY_ALLOCATION_STACK {
|
||||
EFI_HOB_GENERIC_HEADER Header;
|
||||
EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor;
|
||||
} EFI_HOB_MEMORY_ALLOCATION_STACK;
|
||||
|
||||
//
|
||||
// Defines the location of the boot-strap
|
||||
// processor (BSP) BSPStore (<28><>Backing Store Pointer Store<72><65>).
|
||||
// This HOB is valid for the Itanium processor family only
|
||||
// register overflow store.
|
||||
//
|
||||
typedef struct _EFI_HOB_MEMORY_ALLOCATION_BSP_STORE {
|
||||
EFI_HOB_GENERIC_HEADER Header;
|
||||
EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor;
|
||||
} EFI_HOB_MEMORY_ALLOCATION_BSP_STORE;
|
||||
|
||||
//
|
||||
// Defines the location and entry point of the HOB consumer phase.
|
||||
//
|
||||
typedef struct {
|
||||
EFI_HOB_GENERIC_HEADER Header;
|
||||
EFI_HOB_MEMORY_ALLOCATION_HEADER MemoryAllocationHeader;
|
||||
EFI_GUID ModuleName;
|
||||
EFI_PHYSICAL_ADDRESS EntryPoint;
|
||||
} EFI_HOB_MEMORY_ALLOCATION_MODULE;
|
||||
|
||||
typedef UINT32 EFI_RESOURCE_TYPE;
|
||||
|
||||
//
|
||||
// Value of ResourceType in EFI_HOB_RESOURCE_DESCRIPTOR.
|
||||
//
|
||||
#define EFI_RESOURCE_SYSTEM_MEMORY 0x00000000
|
||||
#define EFI_RESOURCE_MEMORY_MAPPED_IO 0x00000001
|
||||
#define EFI_RESOURCE_IO 0x00000002
|
||||
#define EFI_RESOURCE_FIRMWARE_DEVICE 0x00000003
|
||||
#define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT 0x00000004
|
||||
#define EFI_RESOURCE_MEMORY_RESERVED 0x00000005
|
||||
#define EFI_RESOURCE_IO_RESERVED 0x00000006
|
||||
#define EFI_RESOURCE_MAX_MEMORY_TYPE 0x00000007
|
||||
|
||||
|
||||
typedef UINT32 EFI_RESOURCE_ATTRIBUTE_TYPE;
|
||||
|
||||
//
|
||||
// These types can be ORed together as needed.
|
||||
//
|
||||
// The first three enumerations describe settings
|
||||
//
|
||||
#define EFI_RESOURCE_ATTRIBUTE_PRESENT 0x00000001
|
||||
#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED 0x00000002
|
||||
#define EFI_RESOURCE_ATTRIBUTE_TESTED 0x00000004
|
||||
//
|
||||
// The rest of the settings describe capabilities
|
||||
//
|
||||
#define EFI_RESOURCE_ATTRIBUTE_SINGLE_BIT_ECC 0x00000008
|
||||
#define EFI_RESOURCE_ATTRIBUTE_MULTIPLE_BIT_ECC 0x00000010
|
||||
#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_1 0x00000020
|
||||
#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_2 0x00000040
|
||||
#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED 0x00000080
|
||||
#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED 0x00000100
|
||||
#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED 0x00000200
|
||||
#define EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE 0x00000400
|
||||
#define EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE 0x00000800
|
||||
#define EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE 0x00001000
|
||||
#define EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE 0x00002000
|
||||
#define EFI_RESOURCE_ATTRIBUTE_16_BIT_IO 0x00004000
|
||||
#define EFI_RESOURCE_ATTRIBUTE_32_BIT_IO 0x00008000
|
||||
#define EFI_RESOURCE_ATTRIBUTE_64_BIT_IO 0x00010000
|
||||
#define EFI_RESOURCE_ATTRIBUTE_UNCACHED_EXPORTED 0x00020000
|
||||
|
||||
//
|
||||
// Describes the resource properties of all fixed,
|
||||
// nonrelocatable resource ranges found on the processor
|
||||
// host bus during the HOB producer phase.
|
||||
//
|
||||
typedef struct _EFI_HOB_RESOURCE_DESCRIPTOR {
|
||||
EFI_HOB_GENERIC_HEADER Header;
|
||||
EFI_GUID Owner;
|
||||
EFI_RESOURCE_TYPE ResourceType;
|
||||
EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute;
|
||||
EFI_PHYSICAL_ADDRESS PhysicalStart;
|
||||
UINT64 ResourceLength;
|
||||
} EFI_HOB_RESOURCE_DESCRIPTOR;
|
||||
|
||||
//
|
||||
// Allows writers of executable content in the HOB producer phase to
|
||||
// maintain and manage HOBs with specific GUID.
|
||||
//
|
||||
typedef struct _EFI_HOB_GUID_TYPE {
|
||||
EFI_HOB_GENERIC_HEADER Header;
|
||||
EFI_GUID Name;
|
||||
|
||||
//
|
||||
// Guid specific data goes here
|
||||
//
|
||||
} EFI_HOB_GUID_TYPE;
|
||||
|
||||
//
|
||||
// Details the location of firmware volumes that contain firmware files.
|
||||
//
|
||||
typedef struct {
|
||||
EFI_HOB_GENERIC_HEADER Header;
|
||||
EFI_PHYSICAL_ADDRESS BaseAddress;
|
||||
UINT64 Length;
|
||||
} EFI_HOB_FIRMWARE_VOLUME;
|
||||
|
||||
//
|
||||
// Details the location of a firmware volume which was extracted
|
||||
// from a file within another firmware volume.
|
||||
//
|
||||
typedef struct {
|
||||
EFI_HOB_GENERIC_HEADER Header;
|
||||
EFI_PHYSICAL_ADDRESS BaseAddress;
|
||||
UINT64 Length;
|
||||
EFI_GUID FvName;
|
||||
EFI_GUID FileName;
|
||||
} EFI_HOB_FIRMWARE_VOLUME2;
|
||||
|
||||
|
||||
//
|
||||
// Describes processor information, such as address space and I/O space capabilities.
|
||||
//
|
||||
typedef struct _EFI_HOB_CPU {
|
||||
EFI_HOB_GENERIC_HEADER Header;
|
||||
UINT8 SizeOfMemorySpace;
|
||||
UINT8 SizeOfIoSpace;
|
||||
UINT8 Reserved[6];
|
||||
} EFI_HOB_CPU;
|
||||
|
||||
|
||||
//
|
||||
// Describes pool memory allocations.
|
||||
//
|
||||
typedef struct _EFI_HOB_MEMORY_POOL {
|
||||
EFI_HOB_GENERIC_HEADER Header;
|
||||
} EFI_HOB_MEMORY_POOL;
|
||||
|
||||
//
|
||||
// Union of all the possible HOB Types
|
||||
//
|
||||
typedef union {
|
||||
EFI_HOB_GENERIC_HEADER *Header;
|
||||
EFI_HOB_HANDOFF_INFO_TABLE *HandoffInformationTable;
|
||||
EFI_HOB_MEMORY_ALLOCATION *MemoryAllocation;
|
||||
EFI_HOB_MEMORY_ALLOCATION_BSP_STORE *MemoryAllocationBspStore;
|
||||
EFI_HOB_MEMORY_ALLOCATION_STACK *MemoryAllocationStack;
|
||||
EFI_HOB_MEMORY_ALLOCATION_MODULE *MemoryAllocationModule;
|
||||
EFI_HOB_RESOURCE_DESCRIPTOR *ResourceDescriptor;
|
||||
EFI_HOB_GUID_TYPE *Guid;
|
||||
EFI_HOB_FIRMWARE_VOLUME *FirmwareVolume;
|
||||
EFI_HOB_CPU *Cpu;
|
||||
EFI_HOB_MEMORY_POOL *Pool;
|
||||
UINT8 *Raw;
|
||||
} EFI_PEI_HOB_POINTERS;
|
||||
|
||||
|
||||
#endif
|
91
MdePkg/Include/Pi/PiMultiPhase.h
Normal file
91
MdePkg/Include/Pi/PiMultiPhase.h
Normal file
@@ -0,0 +1,91 @@
|
||||
/** @file
|
||||
Include file matches things in PI for multiple module types.
|
||||
|
||||
Copyright (c) 2006 - 2007, Intel Corporation
|
||||
All rights reserved. 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.
|
||||
|
||||
Module Name: PiMultiPhase.h
|
||||
|
||||
@par Revision Reference:
|
||||
Version 1.0.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __PI_MULTIPHASE_H__
|
||||
#define __PI_MULTIPHASE_H__
|
||||
|
||||
#include <Uefi/UefiMultiPhase.h>
|
||||
|
||||
#include <Pi/PiFirmwareVolume.h>
|
||||
#include <Pi/PiFirmwareFile.h>
|
||||
#include <Pi/PiBootMode.h>
|
||||
|
||||
#include <Pi/PiHob.h>
|
||||
#include <Pi/PiDependency.h>
|
||||
|
||||
//
|
||||
// Status Code Type Definition
|
||||
//
|
||||
typedef UINT32 EFI_STATUS_CODE_TYPE;
|
||||
|
||||
//
|
||||
// A Status Code Type is made up of the code type and severity
|
||||
// All values masked by EFI_STATUS_CODE_RESERVED_MASK are
|
||||
// reserved for use by this specification.
|
||||
//
|
||||
#define EFI_STATUS_CODE_TYPE_MASK 0x000000FF
|
||||
#define EFI_STATUS_CODE_SEVERITY_MASK 0xFF000000
|
||||
#define EFI_STATUS_CODE_RESERVED_MASK 0x00FFFF00
|
||||
|
||||
//
|
||||
// Definition of code types, all other values masked by
|
||||
// EFI_STATUS_CODE_TYPE_MASK are reserved for use by
|
||||
// this specification.
|
||||
//
|
||||
#define EFI_PROGRESS_CODE 0x00000001
|
||||
#define EFI_ERROR_CODE 0x00000002
|
||||
#define EFI_DEBUG_CODE 0x00000003
|
||||
|
||||
//
|
||||
// Definitions of severities, all other values masked by
|
||||
// EFI_STATUS_CODE_SEVERITY_MASK are reserved for use by
|
||||
// this specification.
|
||||
// Uncontained errors are major errors that could not contained
|
||||
// to the specific component that is reporting the error
|
||||
// For example, if a memory error was not detected early enough,
|
||||
// the bad data could be consumed by other drivers.
|
||||
//
|
||||
#define EFI_ERROR_MINOR 0x40000000
|
||||
#define EFI_ERROR_MAJOR 0x80000000
|
||||
#define EFI_ERROR_UNRECOVERED 0x90000000
|
||||
#define EFI_ERROR_UNCONTAINED 0xa0000000
|
||||
|
||||
//
|
||||
// Status Code Value Definition
|
||||
//
|
||||
typedef UINT32 EFI_STATUS_CODE_VALUE;
|
||||
//
|
||||
// A Status Code Value is made up of the class, subclass, and
|
||||
// an operation.
|
||||
//
|
||||
#define EFI_STATUS_CODE_CLASS_MASK 0xFF000000
|
||||
#define EFI_STATUS_CODE_SUBCLASS_MASK 0x00FF0000
|
||||
#define EFI_STATUS_CODE_OPERATION_MASK 0x0000FFFF
|
||||
//
|
||||
// Definition of Status Code extended data header.
|
||||
// The data will follow HeaderSize bytes from the beginning of
|
||||
// the structure and is Size bytes long.
|
||||
//
|
||||
typedef struct {
|
||||
UINT16 HeaderSize;
|
||||
UINT16 Size;
|
||||
EFI_GUID Type;
|
||||
} EFI_STATUS_CODE_DATA;
|
||||
|
||||
#endif
|
805
MdePkg/Include/Pi/PiPeiCis.h
Normal file
805
MdePkg/Include/Pi/PiPeiCis.h
Normal file
@@ -0,0 +1,805 @@
|
||||
|
||||
/** @file
|
||||
PI PEI master include file. This file should match the PI spec.
|
||||
|
||||
Copyright (c) 2006 - 2007, Intel Corporation
|
||||
All rights reserved. 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.
|
||||
|
||||
Module Name: PiPeiCis.h
|
||||
|
||||
@par Revision Reference:
|
||||
Version 1.0.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __PI_PEICIS_H__
|
||||
#define __PI_PEICIS_H__
|
||||
|
||||
#include <Pi/PiMultiPhase.h>
|
||||
|
||||
#define EFI_NOT_AVAILABLE_YET EFIERR (28)
|
||||
|
||||
//
|
||||
// Handles of EFI FV/FFS.
|
||||
//
|
||||
typedef VOID *EFI_PEI_FV_HANDLE;
|
||||
typedef VOID *EFI_PEI_FILE_HANDLE;
|
||||
|
||||
//
|
||||
// Declare forward referenced data structures
|
||||
//
|
||||
typedef struct _EFI_PEI_SERVICES EFI_PEI_SERVICES;
|
||||
typedef struct _EFI_PEI_NOTIFY_DESCRIPTOR EFI_PEI_NOTIFY_DESCRIPTOR;
|
||||
|
||||
|
||||
#include <Ppi/CpuIo.h>
|
||||
#include <Ppi/PciCfg2.h>
|
||||
|
||||
/**
|
||||
The PEI Dispatcher will invoke each PEIM one time. During this pass, the PEI
|
||||
Dispatcher will pass control to the PEIM at the AddressOfEntryPoint in the PE Header.
|
||||
|
||||
@param FfsHeader Pointer to the FFS file header.
|
||||
@param PeiServices Describes the list of possible PEI Services.
|
||||
|
||||
@return Status code
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEIM_ENTRY_POINT)(
|
||||
IN EFI_FFS_FILE_HEADER *FfsHeader,
|
||||
IN EFI_PEI_SERVICES **PeiServices
|
||||
);
|
||||
|
||||
/**
|
||||
Entry point of the notification callback function itself within the PEIM.
|
||||
|
||||
@param PeiServices Indirect reference to the PEI Services Table.
|
||||
@param NotifyDescriptor Address of the notification descriptor data structure.
|
||||
@param Ppi Address of the PPI that was installed.
|
||||
|
||||
@return Status code
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEIM_NOTIFY_ENTRY_POINT) (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
|
||||
IN VOID *Ppi
|
||||
);
|
||||
|
||||
//
|
||||
// PEI Ppi Services List Descriptors
|
||||
//
|
||||
#define EFI_PEI_PPI_DESCRIPTOR_PIC 0x00000001
|
||||
#define EFI_PEI_PPI_DESCRIPTOR_PPI 0x00000010
|
||||
#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK 0x00000020
|
||||
#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_DISPATCH 0x00000040
|
||||
#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_TYPES 0x00000060
|
||||
#define EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST 0x80000000
|
||||
|
||||
typedef struct {
|
||||
UINTN Flags;
|
||||
EFI_GUID *Guid;
|
||||
VOID *Ppi;
|
||||
} EFI_PEI_PPI_DESCRIPTOR;
|
||||
|
||||
struct _EFI_PEI_NOTIFY_DESCRIPTOR {
|
||||
UINTN Flags;
|
||||
EFI_GUID *Guid;
|
||||
EFI_PEIM_NOTIFY_ENTRY_POINT Notify;
|
||||
};
|
||||
|
||||
//
|
||||
// Describes request of the module to be loaded to
|
||||
// the permanent memory once it is available. Unlike most of the other HOBs,
|
||||
// this HOB is produced and consumed during the HOB producer phase.
|
||||
//
|
||||
typedef struct _EFI_HOB_LOAD_PEIM {
|
||||
EFI_HOB_GENERIC_HEADER Header;
|
||||
EFI_PEI_FILE_HANDLE FileHandle;
|
||||
EFI_PEIM_ENTRY_POINT EntryPoint;
|
||||
EFI_PEIM_ENTRY_POINT InMemEntryPoint;
|
||||
} EFI_HOB_LOAD_PEIM;
|
||||
|
||||
|
||||
/**
|
||||
This service is the first one provided by the PEI Foundation. This function
|
||||
installs an interface in the PEI PPI database by GUID. The purpose of the
|
||||
service is to publish an interface that other parties can use to call
|
||||
additional PEIMs.
|
||||
|
||||
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES table
|
||||
published by the PEI Foundation.
|
||||
@param PpiList A pointer to the list of interfaces that the caller shall install.
|
||||
|
||||
@retval EFI_SUCCESS The interface was successfully installed.
|
||||
@retval EFI_INVALID_PARAMETER The PpiList pointer is NULL or Any of the PEI PPI descriptors in the list do not have the EFI_PEI_PPI_DESCRIPTOR_PPI bit set in the Flags field.
|
||||
@retval EFI_OUT_OF_RESOURCES There is no additional space in the PPI database.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_INSTALL_PPI) (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_PPI_DESCRIPTOR *PpiList
|
||||
);
|
||||
|
||||
/**
|
||||
This function reinstalls an interface in the PEI PPI database by GUID.
|
||||
The purpose of the service is to publish an interface that other parties
|
||||
can use to replace a same-named interface in the protocol database
|
||||
with a different interface.
|
||||
|
||||
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES table
|
||||
published by the PEI Foundation.
|
||||
@param OldPpi A pointer to the former PPI in the database.
|
||||
@param NewPpi A pointer to the new interfaces that the caller shall install.
|
||||
|
||||
@retval EFI_SUCCESS The interface was successfully installed.
|
||||
@retval EFI_INVALID_PARAMETER The PpiList pointer is NULL or Any of the PEI PPI descriptors in the
|
||||
list do not have the EFI_PEI_PPI_DESCRIPTOR_PPI bit set in the Flags field.
|
||||
@retval EFI_OUT_OF_RESOURCES There is no additional space in the PPI database.
|
||||
@retval EFI_NOT_FOUND The PPI for which the reinstallation was requested has not been installed.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_REINSTALL_PPI) (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_PPI_DESCRIPTOR *OldPpi,
|
||||
IN EFI_PEI_PPI_DESCRIPTOR *NewPpi
|
||||
);
|
||||
|
||||
/**
|
||||
This function locates an interface in the PEI PPI database by GUID.
|
||||
|
||||
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES published by the PEI Foundation.
|
||||
@param Guid A pointer to the GUID whose corresponding interface needs to be found.
|
||||
@param Instance The N-th instance of the interface that is required.
|
||||
@param PpiDescriptor A pointer to instance of the EFI_PEI_PPI_DESCRIPTOR.
|
||||
@param Ppi A pointer to the instance of the interface.
|
||||
|
||||
@retval EFI_SUCCESS The interface was successfully returned.
|
||||
@retval EFI_NOT_FOUND The PPI descriptor is not found in the database.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_LOCATE_PPI) (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_GUID *Guid,
|
||||
IN UINTN Instance,
|
||||
IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor,
|
||||
IN OUT VOID **Ppi
|
||||
);
|
||||
|
||||
/**
|
||||
This function installs a notification service to be called back when a
|
||||
given interface is installed or reinstalled. The purpose of the service
|
||||
is to publish an interface that other parties can use to call additional PPIs
|
||||
that may materialize later.
|
||||
|
||||
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation
|
||||
@param NotifyList A pointer to the list of notification interfaces that the caller shall install.
|
||||
|
||||
@retval EFI_SUCCESS The interface was successfully installed.
|
||||
@retval EFI_INVALID_PARAMETER The PpiList pointer is NULL or Any of the PEI PPI descriptors in the
|
||||
list do not have the EFI_PEI_PPI_DESCRIPTOR_PPI bit set in the Flags field.
|
||||
@retval EFI_OUT_OF_RESOURCES There is no additional space in the PPI database.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_NOTIFY_PPI) (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList
|
||||
);
|
||||
|
||||
/**
|
||||
This function returns 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.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_GET_BOOT_MODE) (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
OUT EFI_BOOT_MODE *BootMode
|
||||
);
|
||||
|
||||
/**
|
||||
This function sets the value of the boot mode.
|
||||
|
||||
@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.
|
||||
|
||||
@retval EFI_SUCCESS The boot mode was returned successfully.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_SET_BOOT_MODE) (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_BOOT_MODE BootMode
|
||||
);
|
||||
|
||||
/**
|
||||
This function returns the pointer to the list of Hand-Off Blocks (HOBs) in memory.
|
||||
|
||||
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation
|
||||
@param HobList A pointer to the list of HOBs that the PEI Foundation will initialize
|
||||
|
||||
@retval EFI_SUCCESS The list was successfully returned.
|
||||
@retval EFI_NOT_AVAILABLE_YET The HOB list is not yet published.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_GET_HOB_LIST) (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN OUT VOID **HobList
|
||||
);
|
||||
|
||||
/**
|
||||
This service published by the PEI Foundation abstracts the creation of a Hand-Off Block's (HOB's) headers.
|
||||
|
||||
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
|
||||
@param Type The type of HOB to be installed.
|
||||
@param Length The length of the HOB to be added.
|
||||
@param Hob The address of a pointer that will contain the HOB header.
|
||||
|
||||
@retval EFI_SUCCESS The HOB was successfully created.
|
||||
@retval EFI_OUT_OF_RESOURCES There is no additional space for HOB creation.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_CREATE_HOB) (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN UINT16 Type,
|
||||
IN UINT16 Length,
|
||||
IN OUT VOID **Hob
|
||||
);
|
||||
|
||||
/**
|
||||
The purpose of the service is to abstract the capability of the PEI
|
||||
Foundation to discover instances of firmware volumes in the system.
|
||||
Given the input file pointer, this service searches for the next
|
||||
matching file in the Firmware File System (FFS) volume.
|
||||
|
||||
@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 FwVolHeader Pointer to the firmware volume header of the volume to return.
|
||||
|
||||
@retval EFI_SUCCESS The volume was found.
|
||||
@retval EFI_NOT_FOUND The volume was not found.
|
||||
@retval EFI_INVALID_PARAMETER FwVolHeader is NULL
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_FFS_FIND_NEXT_VOLUME2) (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN UINTN Instance,
|
||||
IN OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader
|
||||
);
|
||||
|
||||
/**
|
||||
The purpose of the service is to abstract the capability of the PEI
|
||||
Foundation to discover instances of firmware files in the system.
|
||||
Given the input file pointer, this service searches for the next matching
|
||||
file in the Firmware File System (FFS) volume.
|
||||
|
||||
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
|
||||
@param SearchType A filter to find files only of this type.
|
||||
@param FwVolHeader Pointer to the firmware volume header of the volume to search.This parameter
|
||||
must point to a valid FFS volume.
|
||||
@param FileHeader Pointer to the current file from which to begin searching.This pointer will be
|
||||
updated upon return to reflect the file found.
|
||||
|
||||
@retval EFI_SUCCESS The file was found.
|
||||
@retval EFI_NOT_FOUND The file was not found.
|
||||
@retval EFI_NOT_FOUND The header checksum was not zero.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_FFS_FIND_NEXT_FILE2) (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_FV_FILETYPE SearchType,
|
||||
IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,
|
||||
IN OUT EFI_FFS_FILE_HEADER **FileHeader
|
||||
);
|
||||
|
||||
/**
|
||||
Given the input file pointer, this service searches for the next
|
||||
matching file in the Firmware File System (FFS) volume.
|
||||
|
||||
@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 FfsFileHeader A pointer to the file header that contains the set of sections to be searched.
|
||||
@param SectionData A pointer to the discovered section, if successful.
|
||||
|
||||
@retval EFI_SUCCESS The section was found.
|
||||
@retval EFI_NOT_FOUND The section was not found.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_FFS_FIND_SECTION_DATA2) (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_SECTION_TYPE SectionType,
|
||||
IN EFI_FFS_FILE_HEADER *FfsFileHeader,
|
||||
IN OUT VOID **SectionData
|
||||
);
|
||||
|
||||
/**
|
||||
This function registers the found memory configuration with the PEI Foundation.
|
||||
|
||||
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
|
||||
@param MemoryBegin The value of a region of installed memory
|
||||
@param MemoryLength The corresponding length of a region of installed memory.
|
||||
|
||||
@retval EFI_SUCCESS The region was successfully installed in a HOB.
|
||||
@retval EFI_INVALID_PARAMETER MemoryBegin and MemoryLength are illegal for this system.
|
||||
@retval EFI_OUT_OF_RESOURCES There is no additional space for HOB creation.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_INSTALL_PEI_MEMORY) (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PHYSICAL_ADDRESS MemoryBegin,
|
||||
IN UINT64 MemoryLength
|
||||
);
|
||||
|
||||
/**
|
||||
The purpose of the service is to publish an interface that allows
|
||||
PEIMs to allocate memory ranges that are managed by the PEI Foundation.
|
||||
|
||||
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
|
||||
@param MemoryType The type of memory to allocate.
|
||||
@param Pages The number of contiguous 4 KB pages to allocate.
|
||||
@param Memory Pointer to a physical address. On output, the address is set to the base
|
||||
of the page range that was allocated.
|
||||
|
||||
@retval EFI_SUCCESS The memory range was successfully allocated.
|
||||
@retval EFI_OUT_OF_RESOURCES The pages could not be allocated.
|
||||
@retval EFI_INVALID_PARAMETER Type is not equal to AllocateAnyPages.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_ALLOCATE_PAGES) (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_MEMORY_TYPE MemoryType,
|
||||
IN UINTN Pages,
|
||||
IN OUT EFI_PHYSICAL_ADDRESS *Memory
|
||||
);
|
||||
|
||||
/**
|
||||
The purpose of this service is to publish an interface that
|
||||
allows PEIMs to allocate memory ranges that are managed by the PEI Foundation.
|
||||
|
||||
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
|
||||
@param Size The number of bytes to allocate from the pool.
|
||||
@param Buffer If the call succeeds, a pointer to a pointer to the allocated buffer; undefined otherwise.
|
||||
|
||||
@retval EFI_SUCCESS The allocation was successful.
|
||||
@retval EFI_OUT_OF_RESOURCES There is not enough heap to allocate the requested size.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_ALLOCATE_POOL) (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN UINTN Size,
|
||||
OUT VOID **Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
This service copies the contents of one buffer to another buffer.
|
||||
|
||||
@param Destination Pointer to the destination buffer of the memory copy.
|
||||
@param Source Pointer to the source buffer of the memory copy
|
||||
@param Length Number of bytes to copy from Source to Destination.
|
||||
|
||||
@return None
|
||||
|
||||
**/
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EFI_PEI_COPY_MEM) (
|
||||
IN VOID *Destination,
|
||||
IN VOID *Source,
|
||||
IN UINTN Length
|
||||
);
|
||||
|
||||
/**
|
||||
The service fills a buffer with a specified value.
|
||||
|
||||
@param Buffer Pointer to the buffer to fill.
|
||||
@param Size Number of bytes in Buffer to fill.
|
||||
@param Value Value to fill Buffer with
|
||||
|
||||
@return None
|
||||
|
||||
**/
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EFI_PEI_SET_MEM) (
|
||||
IN VOID *Buffer,
|
||||
IN UINTN Size,
|
||||
IN UINT8 Value
|
||||
);
|
||||
|
||||
/**
|
||||
This service publishes an interface that allows PEIMs to report status codes.
|
||||
|
||||
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
|
||||
@param Type Indicates the type of status code being reported.
|
||||
@param Value Describes the current status of a hardware or
|
||||
software entity. This includes information about the class and
|
||||
subclass that is used to classify the entity as well as an operation.
|
||||
For progress codes, the operation is the current activity.
|
||||
For error codes, it is the exception.For debug codes,it is not defined at this time.
|
||||
@param Instance The enumeration of a hardware or software entity within
|
||||
the system. A system may contain multiple entities that match a class/subclass
|
||||
pairing. The instance differentiates between them. An instance of 0 indicates
|
||||
that instance information is unavailable, not meaningful, or not relevant.
|
||||
Valid instance numbers start with 1.
|
||||
@param CallerId This optional parameter may be used to identify the caller.
|
||||
This parameter allows the status code driver to apply different rules to
|
||||
different callers.
|
||||
@param Data This optional parameter may be used to pass additional data.
|
||||
|
||||
@retval EFI_SUCCESS The function completed successfully.
|
||||
@retval EFI_NOT_AVAILABLE_YET No progress code provider has installed an interface in the system.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_REPORT_STATUS_CODE) (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_STATUS_CODE_TYPE Type,
|
||||
IN EFI_STATUS_CODE_VALUE Value,
|
||||
IN UINT32 Instance,
|
||||
IN EFI_GUID *CallerId OPTIONAL,
|
||||
IN EFI_STATUS_CODE_DATA *Data OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Resets the entire platform.
|
||||
|
||||
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES
|
||||
table published by the PEI Foundation.
|
||||
|
||||
@retval EFI_SUCCESS The function completed successfully.
|
||||
@retval EFI_NOT_AVAILABLE_YET The service has not been installed yet.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_RESET_SYSTEM) (
|
||||
IN EFI_PEI_SERVICES **PeiServices
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
This service searches for files with a specific name, within
|
||||
either the specified firmware volume or all firmware volumes.
|
||||
The service returns a file handle of type EFI_PEI_FILE_HANDLE,
|
||||
which must be unique within the system.
|
||||
|
||||
@param FileName A pointer to the name of the file to
|
||||
find within the firmware volume.
|
||||
|
||||
@param VolumeHandle The firmware volume to search FileHandle
|
||||
Upon exit, points to the found file's
|
||||
handle or NULL if it could not be found.
|
||||
|
||||
@retval EFI_SUCCESS File was found.
|
||||
|
||||
@retval EFI_NOT_FOUND File was not found.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER VolumeHandle or FileHandle or
|
||||
FileName was NULL.
|
||||
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_FFS_FIND_BY_NAME) (
|
||||
IN CONST EFI_GUID *FileName,
|
||||
IN CONST EFI_PEI_FV_HANDLE VolumeHandle,
|
||||
OUT EFI_PEI_FILE_HANDLE *FileHandle
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@param FileName Name of the file.
|
||||
|
||||
@param FileType File type. See EFI_FV_FILETYPE, which is
|
||||
defined in the Platform Initialization
|
||||
Firmware Storage Specification.
|
||||
|
||||
@param FileAttributes Attributes of the file. Type
|
||||
EFI_FV_FILE_ATTRIBUTES is defined in
|
||||
the Platform Initialization Firmware
|
||||
Storage Specification.
|
||||
|
||||
@param Buffer Points to the file's data (not the header).
|
||||
Not valid if EFI_FV_FILE_ATTRIB_MEMORY_MAPPED
|
||||
is zero.
|
||||
|
||||
@param BufferSize Size of the file's data.
|
||||
|
||||
**/
|
||||
typedef struct {
|
||||
EFI_GUID FileName;
|
||||
EFI_FV_FILETYPE FileType;
|
||||
EFI_FV_FILE_ATTRIBUTES FileAttributes;
|
||||
VOID *Buffer;
|
||||
UINT32 BufferSize;
|
||||
} EFI_FV_FILE_INFO;
|
||||
|
||||
/**
|
||||
|
||||
This function returns information about a specific file,
|
||||
including its file name, type, attributes, starting address and
|
||||
size. If the firmware volume is not memory mapped then the
|
||||
Buffer member will be NULL.
|
||||
|
||||
@param FileHandle Handle of the file.
|
||||
|
||||
@param FileInfo Upon exit, points to the file<6C><65>s
|
||||
information.
|
||||
|
||||
@retval EFI_SUCCESS File information returned.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER If FileHandle does not
|
||||
represent a valid file.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER If FileInfo is NULL.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_FFS_GET_FILE_INFO) (
|
||||
IN CONST EFI_PEI_FILE_HANDLE FileHandle,
|
||||
OUT EFI_FV_FILE_INFO *FileInfo
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@param FvAttributes Attributes of the firmware volume. Type
|
||||
EFI_FVB_ATTRIBUTES is defined in the
|
||||
Platform Initialization Firmware Storage
|
||||
Specficiation.
|
||||
|
||||
@param FvFormat Format of the firmware volume. For PI
|
||||
Architecture Firmware Volumes, this can
|
||||
be copied from FileSystemGuid in
|
||||
EFI_FIRMWARE_VOLUME_HEADER.
|
||||
|
||||
@param FvName Name of the firmware volume. For PI
|
||||
Architecture Firmware Volumes, this can
|
||||
be copied from VolumeName in the
|
||||
extended header of
|
||||
EFI_FIRMWARE_VOLUME_HEADER.
|
||||
|
||||
@param FvStart Points to the first byte of the firmware
|
||||
volume, if bit EFI_FVB_MEMORY_MAPPED is
|
||||
set in FvAttributes. FvSize Size of the
|
||||
firmware volume.
|
||||
|
||||
**/
|
||||
typedef struct {
|
||||
EFI_FVB_ATTRIBUTES FvAttributes;
|
||||
EFI_GUID FvFormat;
|
||||
EFI_GUID FvName;
|
||||
VOID *FvStart;
|
||||
UINT64 FvSize;
|
||||
} EFI_FV_INFO;
|
||||
|
||||
/**
|
||||
|
||||
This function returns information about a specific firmware
|
||||
volume, including its name, type, attributes, starting address
|
||||
and size.
|
||||
|
||||
@param VolumeHandle Handle of the volume.
|
||||
|
||||
@param VolumeInfo Upon exit, points to the volume<6D><65>s
|
||||
information.
|
||||
|
||||
@retval EFI_SUCCESS File information returned.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER If FileHandle does not
|
||||
represent a valid file.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER If FileInfo is NULL.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_FFS_GET_VOLUME_INFO) (
|
||||
IN CONST EFI_PEI_FV_HANDLE *VolumeHandle,
|
||||
OUT EFI_FV_INFO *VolumeInfo
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
This service registers a file handle so that after memory is
|
||||
available, the PEIM will be re-loaded into permanent memory and
|
||||
re-initialized. The PEIM registered this way will always be
|
||||
initialized twice. The first time, this function call will
|
||||
return EFI_SUCCESS. The second time, this function call will
|
||||
return EFI_ALREADY_STARTED. Depending on the order in which
|
||||
PEIMs are dispatched, the PEIM making this call may be
|
||||
initialized after permanent memory is installed, even the first
|
||||
time.
|
||||
|
||||
@param FileHandle PEIM<49><4D>s file handle. Must be the currently
|
||||
xecuting PEIM.
|
||||
|
||||
@retval EFI_SUCCESS The PEIM was successfully registered for
|
||||
shadowing.
|
||||
|
||||
@retval EFI_ALREADY_STARTED The PEIM was previously
|
||||
registered for shadowing.
|
||||
|
||||
@retval EFI_NOT_FOUND The FileHandle does not refer to a
|
||||
valid file handle.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_REGISTER_FOR_SHADOW) (
|
||||
IN CONST EFI_PEI_FILE_HANDLE FileHandle
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// PEI Specification Revision information
|
||||
//
|
||||
#define PEI_SPECIFICATION_MAJOR_REVISION 1
|
||||
#define PEI_SPECIFICATION_MINOR_REVISION 0
|
||||
|
||||
//
|
||||
// PEI Services Table
|
||||
//
|
||||
#define PEI_SERVICES_SIGNATURE 0x5652455320494550
|
||||
#define PEI_SERVICES_REVISION (PEI_SPECIFICATION_MAJOR_REVISION<<16) | (PEI_SPECIFICATION_MINOR_REVISION)
|
||||
|
||||
struct EFI_PEI_SERVICES {
|
||||
EFI_TABLE_HEADER Hdr;
|
||||
//
|
||||
// PPI Functions
|
||||
//
|
||||
EFI_PEI_INSTALL_PPI InstallPpi;
|
||||
EFI_PEI_REINSTALL_PPI ReInstallPpi;
|
||||
EFI_PEI_LOCATE_PPI LocatePpi;
|
||||
EFI_PEI_NOTIFY_PPI NotifyPpi;
|
||||
//
|
||||
// Boot Mode Functions
|
||||
//
|
||||
EFI_PEI_GET_BOOT_MODE GetBootMode;
|
||||
EFI_PEI_SET_BOOT_MODE SetBootMode;
|
||||
//
|
||||
// HOB Functions
|
||||
//
|
||||
EFI_PEI_GET_HOB_LIST GetHobList;
|
||||
EFI_PEI_CREATE_HOB CreateHob;
|
||||
//
|
||||
// Firmware Volume Functions
|
||||
//
|
||||
EFI_PEI_FFS_FIND_NEXT_VOLUME2 FfsFindNextVolume;
|
||||
EFI_PEI_FFS_FIND_NEXT_FILE2 FfsFindNextFile;
|
||||
EFI_PEI_FFS_FIND_SECTION_DATA2 FfsFindSectionData;
|
||||
//
|
||||
// PEI Memory Functions
|
||||
//
|
||||
EFI_PEI_INSTALL_PEI_MEMORY InstallPeiMemory;
|
||||
EFI_PEI_ALLOCATE_PAGES AllocatePages;
|
||||
EFI_PEI_ALLOCATE_POOL AllocatePool;
|
||||
EFI_PEI_COPY_MEM CopyMem;
|
||||
EFI_PEI_SET_MEM SetMem;
|
||||
//
|
||||
// Status Code
|
||||
EFI_PEI_REPORT_STATUS_CODE ReportStatusCode;
|
||||
//
|
||||
// Reset
|
||||
//
|
||||
EFI_PEI_RESET_SYSTEM ResetSystem;
|
||||
//
|
||||
// (the following interfaces are installed by publishing PEIM)
|
||||
//
|
||||
// I/O Abstractions
|
||||
//
|
||||
EFI_PEI_CPU_IO_PPI *CpuIo;
|
||||
EFI_PEI_PCI_CFG2_PPI *PciCfg;
|
||||
//
|
||||
// Future Installed Services
|
||||
EFI_PEI_FFS_FIND_BY_NAME FfsFindFileByName;
|
||||
EFI_PEI_FFS_GET_FILE_INFO FfsGetFileInfo;
|
||||
EFI_PEI_FFS_GET_VOLUME_INFO FfsGetVolumeInfo;
|
||||
EFI_PEI_REGISTER_FOR_SHADOW RegisterForShadow;
|
||||
} ;
|
||||
|
||||
|
||||
typedef struct _EFI_SEC_PEI_HAND_OFF {
|
||||
//
|
||||
// Size of the data structure.
|
||||
//
|
||||
UINT16 DataSize;
|
||||
|
||||
//
|
||||
// Points to the first byte of the boot firmware volume,
|
||||
// which the PEI Dispatcher should search for
|
||||
// PEI modules.
|
||||
//
|
||||
VOID *BootFirmwareVolumeBase;
|
||||
|
||||
//
|
||||
// Size of the boot firmware volume, in bytes.
|
||||
//
|
||||
UINTN BootFirmwareVolumeSize;
|
||||
|
||||
//
|
||||
// Points to the first byte of the temporary RAM.
|
||||
//
|
||||
VOID *TemporaryRamBase;
|
||||
|
||||
//
|
||||
// Size of the temporary RAM, in bytes.
|
||||
//
|
||||
UINTN TemporaryRamSize;
|
||||
|
||||
//
|
||||
// Points to the first byte of the temporary RAM
|
||||
// available for use by the PEI Foundation. The area
|
||||
// described by PeiTemporaryRamBase and PeiTemporaryRamSize
|
||||
// must not extend outside beyond the area described by
|
||||
// TemporaryRamBase & TemporaryRamSize. This area should not
|
||||
// overlap with the area reported by StackBase and
|
||||
// StackSize.
|
||||
//
|
||||
VOID *PeiTemporaryRamBase;
|
||||
|
||||
//
|
||||
// Size of the available temporary RAM available for
|
||||
// use by the PEI Foundation, in bytes.
|
||||
//
|
||||
UINTN PeiTemporaryRamSize;
|
||||
|
||||
//
|
||||
// Points to the first byte of the stack.
|
||||
// This are may be part of the memory described by
|
||||
// TemporaryRamBase and TemporaryRamSize
|
||||
// or may be an entirely separate area.
|
||||
//
|
||||
VOID *StackBase;
|
||||
|
||||
//
|
||||
// Size of the stack, in bytes.
|
||||
//
|
||||
UINTN StackSize;
|
||||
} EFI_SEC_PEI_HAND_OFF;
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user