+++ /dev/null
-/** @file\r
- Include file matches things in the DXE CIS.\r
-\r
- Copyright (c) 2006, Intel Corporation \r
- All rights reserved. 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: DxeCis.h\r
-\r
- @par Revision Reference:\r
- Version 0.91B.\r
-\r
-**/\r
-\r
-#ifndef __DXE_CIS__\r
-#define __DXE_CIS__\r
-\r
-#include <Uefi/UefiSpec.h>\r
-\r
-\r
-#define TIANO_ERROR(a) (MAX_2_BITS | (a))\r
-\r
-#if (EFI_SPECIFICATION_VERSION < 0x00020000)\r
-//\r
-// Tiano added a couple of return types. These are owned by UEFI specification\r
-// and Tiano can not use them. Thus for UEFI 2.0/R9 support we moved the values\r
-// to a UEFI OEM extension range to conform to UEFI specification.\r
-//\r
-#define EFI_NOT_AVAILABLE_YET EFIERR (28)\r
-#define EFI_UNLOAD_IMAGE EFIERR (29)\r
-#else\r
-#define EFI_NOT_AVAILABLE_YET TIANO_ERROR (0)\r
-#define EFI_UNLOAD_IMAGE TIANO_ERROR (1)\r
-#endif\r
-\r
-//\r
-// Implementation contamination of UEFI 2.0\r
-// Pointer to internal runtime pointer\r
-//\r
-#define EFI_IPF_GP_POINTER 0x00000008\r
-\r
-\r
-//\r
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r
-//\r
-\r
-//\r
-// attributes for reserved memory before it is promoted to system memory\r
-//\r
-#define EFI_MEMORY_PRESENT 0x0100000000000000ULL\r
-#define EFI_MEMORY_INITIALIZED 0x0200000000000000ULL\r
-#define EFI_MEMORY_TESTED 0x0400000000000000ULL\r
-\r
-//\r
-// range for memory mapped port I/O on IPF\r
-//\r
-#define EFI_MEMORY_PORT_IO 0x4000000000000000ULL\r
-\r
-//\r
-// Modifier for EFI DXE Services\r
-//\r
-#define EFI_DXESERVICE\r
-\r
-\r
-//\r
-// Global Coherencey Domain types\r
-//\r
-typedef enum {\r
- EfiGcdMemoryTypeNonExistent,\r
- EfiGcdMemoryTypeReserved,\r
- EfiGcdMemoryTypeSystemMemory,\r
- EfiGcdMemoryTypeMemoryMappedIo,\r
- EfiGcdMemoryTypeMaximum\r
-} EFI_GCD_MEMORY_TYPE;\r
-\r
-typedef enum {\r
- EfiGcdIoTypeNonExistent,\r
- EfiGcdIoTypeReserved,\r
- EfiGcdIoTypeIo,\r
- EfiGcdIoTypeMaximum\r
-} EFI_GCD_IO_TYPE;\r
-\r
-typedef enum {\r
- EfiGcdAllocateAnySearchBottomUp,\r
- EfiGcdAllocateMaxAddressSearchBottomUp,\r
- EfiGcdAllocateAddress,\r
- EfiGcdAllocateAnySearchTopDown,\r
- EfiGcdAllocateMaxAddressSearchTopDown,\r
- EfiGcdMaxAllocateType\r
-} EFI_GCD_ALLOCATE_TYPE;\r
-\r
-typedef struct {\r
- EFI_PHYSICAL_ADDRESS BaseAddress;\r
- UINT64 Length;\r
- UINT64 Capabilities;\r
- UINT64 Attributes;\r
- EFI_GCD_MEMORY_TYPE GcdMemoryType;\r
- EFI_HANDLE ImageHandle;\r
- EFI_HANDLE DeviceHandle;\r
-} EFI_GCD_MEMORY_SPACE_DESCRIPTOR;\r
-\r
-typedef struct {\r
- EFI_PHYSICAL_ADDRESS BaseAddress;\r
- UINT64 Length;\r
- EFI_GCD_IO_TYPE GcdIoType;\r
- EFI_HANDLE ImageHandle;\r
- EFI_HANDLE DeviceHandle;\r
-} EFI_GCD_IO_SPACE_DESCRIPTOR;\r
-\r
-/**\r
- Adds reserved memory, system memory, or memory-mapped I/O resources to the\r
- global coherency domain of the processor.\r
-\r
- @param GcdMemoryType Memory type of the memory space.\r
- @param BaseAddress Base address of the memory space.\r
- @param Length Length of the memory space.\r
- @param Capabilities alterable attributes of the memory space.\r
-\r
- @retval EFI_SUCCESS Merged this memory space into GCD map.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ADD_MEMORY_SPACE) (\r
- IN EFI_GCD_MEMORY_TYPE GcdMemoryType,\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length,\r
- IN UINT64 Capabilities\r
- )\r
-;\r
-\r
-/**\r
- Allocates nonexistent memory, reserved memory, system memory, or memorymapped\r
- I/O resources from the global coherency domain of the processor.\r
-\r
- @param GcdAllocateType The type of allocate operation\r
- @param GcdMemoryType The desired memory type\r
- @param Alignment Align with 2^Alignment\r
- @param Length Length to allocate\r
- @param BaseAddress Base address to allocate\r
- @param Imagehandle The image handle consume the allocated space.\r
- @param DeviceHandle The device handle consume the allocated space.\r
-\r
- @retval EFI_INVALID_PARAMETER Invalid parameter.\r
- @retval EFI_NOT_FOUND No descriptor contains the desired space.\r
- @retval EFI_SUCCESS Memory space successfully allocated.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ALLOCATE_MEMORY_SPACE) (\r
- IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType,\r
- IN EFI_GCD_MEMORY_TYPE GcdMemoryType,\r
- IN UINTN Alignment,\r
- IN UINT64 Length,\r
- IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress,\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_HANDLE DeviceHandle OPTIONAL\r
- )\r
-;\r
-\r
-/**\r
- Frees nonexistent memory, reserved memory, system memory, or memory-mapped\r
- I/O resources from the global coherency domain of the processor.\r
-\r
- @param BaseAddress Base address of the segment.\r
- @param Length Length of the segment.\r
-\r
- @retval EFI_SUCCESS Space successfully freed.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_FREE_MEMORY_SPACE) (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
- )\r
-;\r
-\r
-/**\r
- Removes reserved memory, system memory, or memory-mapped I/O resources from\r
- the global coherency domain of the processor.\r
-\r
- @param BaseAddress Base address of the memory space.\r
- @param Length Length of the memory space.\r
-\r
- @retval EFI_SUCCESS Successfully remove a segment of memory space.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_REMOVE_MEMORY_SPACE) (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
- )\r
-;\r
-\r
-/**\r
- Retrieves the descriptor for a memory region containing a specified address.\r
-\r
- @param BaseAddress Specified start address\r
- @param Descriptor Specified length\r
-\r
- @retval EFI_INVALID_PARAMETER Invalid parameter\r
- @retval EFI_SUCCESS Successfully get memory space descriptor.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_GET_MEMORY_SPACE_DESCRIPTOR) (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR *Descriptor\r
- )\r
-;\r
-\r
-/**\r
- Modifies the attributes for a memory region in the global coherency domain of the\r
- processor.\r
-\r
- @param BaseAddress Specified start address\r
- @param Length Specified length\r
- @param Attributes Specified attributes\r
-\r
- @retval EFI_SUCCESS Successfully set attribute of a segment of memory space.\r
-\r
-**/\r
-typedef\r
-\r
-EFI_STATUS\r
-(EFIAPI *EFI_SET_MEMORY_SPACE_ATTRIBUTES) (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length,\r
- IN UINT64 Attributes\r
- )\r
-;\r
-\r
-/**\r
- Returns a map of the memory resources in the global coherency domain of the\r
- processor.\r
-\r
- @param NumberOfDescriptors Number of descriptors.\r
- @param MemorySpaceMap Descriptor array\r
-\r
- @retval EFI_INVALID_PARAMETER Invalid parameter\r
- @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate\r
- @retval EFI_SUCCESS Successfully get memory space map.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_GET_MEMORY_SPACE_MAP) (\r
- OUT UINTN *NumberOfDescriptors,\r
- OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR **MemorySpaceMap\r
- )\r
-;\r
-\r
-/**\r
- Adds reserved I/O or I/O resources to the global coherency domain of the processor.\r
-\r
- @param GcdIoType IO type of the segment.\r
- @param BaseAddress Base address of the segment.\r
- @param Length Length of the segment.\r
-\r
- @retval EFI_SUCCESS Merged this segment into GCD map.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ADD_IO_SPACE) (\r
- IN EFI_GCD_IO_TYPE GcdIoType,\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
- )\r
-;\r
-\r
-/**\r
- Allocates nonexistent I/O, reserved I/O, or I/O resources from the global coherency\r
- domain of the processor.\r
-\r
- @param GcdAllocateType The type of allocate operation\r
- @param GcdIoType The desired IO type\r
- @param Alignment Align with 2^Alignment\r
- @param Length Length to allocate\r
- @param BaseAddress Base address to allocate\r
- @param Imagehandle The image handle consume the allocated space.\r
- @param DeviceHandle The device handle consume the allocated space.\r
-\r
- @retval EFI_INVALID_PARAMETER Invalid parameter.\r
- @retval EFI_NOT_FOUND No descriptor contains the desired space.\r
- @retval EFI_SUCCESS IO space successfully allocated.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ALLOCATE_IO_SPACE) (\r
- IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType,\r
- IN EFI_GCD_IO_TYPE GcdIoType,\r
- IN UINTN Alignment,\r
- IN UINT64 Length,\r
- IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress,\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_HANDLE DeviceHandle OPTIONAL\r
- )\r
-;\r
-\r
-/**\r
- Frees nonexistent I/O, reserved I/O, or I/O resources from the global coherency\r
- domain of the processor.\r
-\r
- @param BaseAddress Base address of the segment.\r
- @param Length Length of the segment.\r
-\r
- @retval EFI_SUCCESS Space successfully freed.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_FREE_IO_SPACE) (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
- )\r
-;\r
-\r
-/**\r
- Removes reserved I/O or I/O resources from the global coherency domain of the\r
- processor.\r
-\r
- @param BaseAddress Base address of the segment.\r
- @param Length Length of the segment.\r
-\r
- @retval EFI_SUCCESS Successfully removed a segment of IO space.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_REMOVE_IO_SPACE) (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
- )\r
-;\r
-\r
-/**\r
- Retrieves the descriptor for an I/O region containing a specified address.\r
-\r
- @param BaseAddress Specified start address\r
- @param Descriptor Specified length\r
-\r
- @retval EFI_INVALID_PARAMETER Descriptor is NULL.\r
- @retval EFI_SUCCESS Successfully get the IO space descriptor.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_GET_IO_SPACE_DESCRIPTOR) (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- OUT EFI_GCD_IO_SPACE_DESCRIPTOR *Descriptor\r
- )\r
-;\r
-\r
-/**\r
- Returns a map of the I/O resources in the global coherency domain of the processor.\r
-\r
- @param NumberOfDescriptors Number of descriptors.\r
- @param MemorySpaceMap Descriptor array\r
-\r
- @retval EFI_INVALID_PARAMETER Invalid parameter\r
- @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate\r
- @retval EFI_SUCCESS Successfully get IO space map.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_GET_IO_SPACE_MAP) (\r
- OUT UINTN *NumberOfDescriptors,\r
- OUT EFI_GCD_IO_SPACE_DESCRIPTOR **IoSpaceMap\r
- )\r
-;\r
-\r
-/**\r
- Loads and executed DXE drivers from firmware volumes.\r
-\r
- @return Status code\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_DISPATCH) (VOID)\r
-;\r
-\r
-/**\r
- Clears the Schedule on Request (SOR) flag for a component that is stored in a firmware volume.\r
-\r
- @param FirmwareVolumeHandle The handle of the firmware volume that contains the file specified by FileName.\r
- @param DriverName A pointer to the name of the file in a firmware volume.\r
-\r
- @return Status code\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SCHEDULE) (\r
- IN EFI_HANDLE FirmwareVolumeHandle,\r
- IN EFI_GUID *DriverName\r
- )\r
-;\r
-\r
-/**\r
- Promotes a file stored in a firmware volume from the untrusted to the trusted state.\r
-\r
- @param FirmwareVolumeHandle The handle of the firmware volume that contains the file specified by FileName.\r
- @param DriverName A pointer to the name of the file in a firmware volume.\r
-\r
- @return Status code\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_TRUST) (\r
- IN EFI_HANDLE FirmwareVolumeHandle,\r
- IN EFI_GUID *DriverName\r
- )\r
-;\r
-\r
-/**\r
- Creates a firmware volume handle for a firmware volume that is present in system memory.\r
-\r
- @param FirmwareVolumeHeader A pointer to the header of the firmware volume.\r
- @param Size The size, in bytes, of the firmware volume.\r
- @param FirmwareVolumeHandle On output, a pointer to the created handle.\r
-\r
- @return Status code\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PROCESS_FIRMWARE_VOLUME) (\r
- IN VOID *FvHeader,\r
- IN UINTN Size,\r
- OUT EFI_HANDLE *FirmwareVolumeHandle\r
- )\r
-;\r
-\r
-//\r
-// DXE Services Table\r
-//\r
-#define EFI_DXE_SERVICES_SIGNATURE 0x565245535f455844ULL\r
-#define EFI_DXE_SERVICES_REVISION ((0 << 16) | (90))\r
-\r
-typedef struct {\r
- EFI_TABLE_HEADER Hdr;\r
-\r
- //\r
- // Global Coherency Domain Services\r
- //\r
- EFI_ADD_MEMORY_SPACE AddMemorySpace;\r
- EFI_ALLOCATE_MEMORY_SPACE AllocateMemorySpace;\r
- EFI_FREE_MEMORY_SPACE FreeMemorySpace;\r
- EFI_REMOVE_MEMORY_SPACE RemoveMemorySpace;\r
- EFI_GET_MEMORY_SPACE_DESCRIPTOR GetMemorySpaceDescriptor;\r
- EFI_SET_MEMORY_SPACE_ATTRIBUTES SetMemorySpaceAttributes;\r
- EFI_GET_MEMORY_SPACE_MAP GetMemorySpaceMap;\r
- EFI_ADD_IO_SPACE AddIoSpace;\r
- EFI_ALLOCATE_IO_SPACE AllocateIoSpace;\r
- EFI_FREE_IO_SPACE FreeIoSpace;\r
- EFI_REMOVE_IO_SPACE RemoveIoSpace;\r
- EFI_GET_IO_SPACE_DESCRIPTOR GetIoSpaceDescriptor;\r
- EFI_GET_IO_SPACE_MAP GetIoSpaceMap;\r
-\r
- //\r
- // Dispatcher Services\r
- //\r
- EFI_DISPATCH Dispatch;\r
- EFI_SCHEDULE Schedule;\r
- EFI_TRUST Trust;\r
- //\r
- // Service to process a single firmware volume found in a capsule\r
- //\r
- EFI_PROCESS_FIRMWARE_VOLUME ProcessFirmwareVolume;\r
-} EFI_DXE_SERVICES;\r
-\r
-\r
-//\r
-// Function prototype for invoking a function on an Application Processor\r
-// Used by both the SMM infrastructure and the MP Services Protocol\r
-//\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_AP_PROCEDURE) (\r
- IN VOID *Buffer\r
- );\r
-\r
-#include <Common/BootMode.h>\r
-#include <Common/BootScript.h>\r
-#include <Common/Capsule.h>\r
-#include <Common/Dependency.h>\r
-#include <Common/FirmwareVolumeImageFormat.h>\r
-#include <Common/FirmwareVolumeHeader.h>\r
-#include <Common/FirmwareFileSystem.h>\r
-#include <Common/Hob.h>\r
-#include <Common/InternalFormRepresentation.h>\r
-#include <Common/StatusCode.h>\r
-#include <Common/StatusCodeDataTypeId.h>\r
-\r
-#include <Guid/AcpiTableStorage.h>\r
-#include <Guid/Apriori.h>\r
-#include <Guid/Capsule.h>\r
-#include <Guid/DxeServices.h>\r
-#include <Guid/EventLegacyBios.h>\r
-#include <Guid/FirmwareFileSystem.h>\r
-#include <Guid/FrameworkDevicePath.h>\r
-#include <Guid/HobList.h>\r
-#include <Guid/MemoryAllocationHob.h>\r
-#include <Guid/SmramMemoryReserve.h>\r
-#include <Guid/StatusCodeDataTypeId.h>\r
-\r
-#include <Dxe/ArchProtocol/Bds.h>\r
-#include <Dxe/ArchProtocol/Cpu.h>\r
-#include <Dxe/ArchProtocol/Metronome.h>\r
-#include <Dxe/ArchProtocol/MonotonicCounter.h>\r
-#include <Dxe/ArchProtocol/RealTimeClock.h>\r
-#include <Dxe/ArchProtocol/Reset.h>\r
-#include <Dxe/ArchProtocol/Runtime.h>\r
-#include <Dxe/ArchProtocol/Security.h>\r
-#include <Dxe/ArchProtocol/SecurityPolicy.h>\r
-#include <Dxe/ArchProtocol/StatusCode.h>\r
-#include <Dxe/ArchProtocol/Timer.h>\r
-#include <Dxe/ArchProtocol/Variable.h>\r
-#include <Dxe/ArchProtocol/VariableWrite.h>\r
-#include <Dxe/ArchProtocol/WatchdogTimer.h>\r
-\r
-#include <Protocol/AcpiSupport.h>\r
-#include <Protocol/BootScriptSave.h>\r
-#include <Protocol/CpuIo.h>\r
-#include <Protocol/DataHub.h>\r
-#include <Protocol/FirmwareVolume.h>\r
-#include <Protocol/FirmwareVolumeBlock.h>\r
-#include <Protocol/FirmwareVolumeDispatch.h>\r
-#include <Protocol/Hii.h>\r
-#include <Protocol/FormBrowser.h>\r
-#include <Protocol/FormCallback.h>\r
-#include <Protocol/GuidedSectionExtraction.h>\r
-#include <Protocol/IdeControllerInit.h>\r
-#include <Protocol/IncompatiblePciDeviceSupport.h>\r
-#include <Protocol/PciHostBridgeResourceAllocation.h>\r
-#include <Protocol/PciHotPlugInit.h>\r
-#include <Protocol/PciPlatform.h>\r
-#include <Protocol/SectionExtraction.h>\r
-#include <Protocol/Smbus.h>\r
-#include <Protocol/LegacyBios.h>\r
-#include <Protocol/Legacy8259.h>\r
-#include <Protocol/LegacyRegion.h>\r
-#include <Protocol/LegacyBiosPlatform.h>\r
-#include <Protocol/LegacyInterrupt.h>\r
-\r
-#endif\r