+++ /dev/null
-/** @file\r
- This file defines the data structures that are architecturally defined for file\r
- images loaded via the FirmwareVolume protocol. The Firmware Volume specification\r
- is the basis for these definitions.\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: FimrwareVolumeImageFormat.h\r
-\r
- @par Revision Reference:\r
- These definitions are from Firmware Volume Spec 0.9.\r
-\r
-**/\r
-\r
-#ifndef __FIRMWARE_VOLUME_IMAGE_FORMAT_H__\r
-#define __FIRMWARE_VOLUME_IMAGE_FORMAT_H__\r
-\r
-//\r
-// pack all data structures since this is actually a binary format and we cannot\r
-// allow internal padding in the data structures because of some compilerism..\r
-//\r
-#pragma pack(1)\r
-//\r
-// ////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Architectural file types\r
-//\r
-typedef UINT8 EFI_FV_FILETYPE;\r
-\r
-#define EFI_FV_FILETYPE_ALL 0x00\r
-#define EFI_FV_FILETYPE_RAW 0x01\r
-#define EFI_FV_FILETYPE_FREEFORM 0x02\r
-#define EFI_FV_FILETYPE_SECURITY_CORE 0x03\r
-#define EFI_FV_FILETYPE_PEI_CORE 0x04\r
-#define EFI_FV_FILETYPE_DXE_CORE 0x05\r
-#define EFI_FV_FILETYPE_PEIM 0x06\r
-#define EFI_FV_FILETYPE_DRIVER 0x07\r
-#define EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER 0x08\r
-#define EFI_FV_FILETYPE_APPLICATION 0x09\r
-//\r
-// File type 0x0A is reserved and should not be used\r
-//\r
-#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE 0x0B\r
-\r
-//\r
-// ////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Section types\r
-//\r
-typedef UINT8 EFI_SECTION_TYPE;\r
-\r
-//\r
-// ************************************************************\r
-// The section type EFI_SECTION_ALL is a psuedo type. It is\r
-// used as a wildcard when retrieving sections. The section\r
-// type EFI_SECTION_ALL matches all section types.\r
-// ************************************************************\r
-//\r
-#define EFI_SECTION_ALL 0x00\r
-\r
-//\r
-// ************************************************************\r
-// Encapsulation section Type values\r
-// ************************************************************\r
-//\r
-#define EFI_SECTION_COMPRESSION 0x01\r
-#define EFI_SECTION_GUID_DEFINED 0x02\r
-\r
-//\r
-// ************************************************************\r
-// Leaf section Type values\r
-// ************************************************************\r
-//\r
-#define EFI_SECTION_FIRST_LEAF_SECTION_TYPE 0x10\r
-\r
-#define EFI_SECTION_PE32 0x10\r
-#define EFI_SECTION_PIC 0x11\r
-#define EFI_SECTION_TE 0x12\r
-#define EFI_SECTION_DXE_DEPEX 0x13\r
-#define EFI_SECTION_VERSION 0x14\r
-#define EFI_SECTION_USER_INTERFACE 0x15\r
-#define EFI_SECTION_COMPATIBILITY16 0x16\r
-#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE 0x17\r
-#define EFI_SECTION_FREEFORM_SUBTYPE_GUID 0x18\r
-#define EFI_SECTION_RAW 0x19\r
-#define EFI_SECTION_PEI_DEPEX 0x1B\r
-\r
-#define EFI_SECTION_LAST_LEAF_SECTION_TYPE 0x1B\r
-#define EFI_SECTION_LAST_SECTION_TYPE 0x1B\r
-\r
-//\r
-// ////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Common section header\r
-//\r
-typedef struct {\r
- UINT8 Size[3];\r
- UINT8 Type;\r
-} EFI_COMMON_SECTION_HEADER;\r
-\r
-#define SECTION_SIZE(SectionHeaderPtr) \\r
- ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) SectionHeaderPtr)->Size) & 0x00ffffff))\r
-\r
-//\r
-// ////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Compression section\r
-//\r
-//\r
-// CompressionType values\r
-//\r
-#define EFI_NOT_COMPRESSED 0x00\r
-#define EFI_STANDARD_COMPRESSION 0x01\r
-#define EFI_CUSTOMIZED_COMPRESSION 0x02\r
-\r
-typedef struct {\r
- EFI_COMMON_SECTION_HEADER CommonHeader;\r
- UINT32 UncompressedLength;\r
- UINT8 CompressionType;\r
-} EFI_COMPRESSION_SECTION;\r
-\r
-//\r
-// ////////////////////////////////////////////////////////////////////////////\r
-//\r
-// GUID defined section\r
-//\r
-typedef struct {\r
- EFI_COMMON_SECTION_HEADER CommonHeader;\r
- EFI_GUID SectionDefinitionGuid;\r
- UINT16 DataOffset;\r
- UINT16 Attributes;\r
-} EFI_GUID_DEFINED_SECTION;\r
-\r
-//\r
-// Bit values for Attributes\r
-//\r
-#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED 0x01\r
-#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID 0x02\r
-\r
-//\r
-// Bit values for AuthenticationStatus\r
-//\r
-#define EFI_AGGREGATE_AUTH_STATUS_PLATFORM_OVERRIDE 0x000001\r
-#define EFI_AGGREGATE_AUTH_STATUS_IMAGE_SIGNED 0x000002\r
-#define EFI_AGGREGATE_AUTH_STATUS_NOT_TESTED 0x000004\r
-#define EFI_AGGREGATE_AUTH_STATUS_TEST_FAILED 0x000008\r
-#define EFI_AGGREGATE_AUTH_STATUS_ALL 0x00000f\r
-\r
-#define EFI_LOCAL_AUTH_STATUS_PLATFORM_OVERRIDE 0x010000\r
-#define EFI_LOCAL_AUTH_STATUS_IMAGE_SIGNED 0x020000\r
-#define EFI_LOCAL_AUTH_STATUS_NOT_TESTED 0x040000\r
-#define EFI_LOCAL_AUTH_STATUS_TEST_FAILED 0x080000\r
-#define EFI_LOCAL_AUTH_STATUS_ALL 0x0f0000\r
-\r
-//\r
-// ////////////////////////////////////////////////////////////////////////////\r
-//\r
-// PE32+ section\r
-//\r
-typedef struct {\r
- EFI_COMMON_SECTION_HEADER CommonHeader;\r
-} EFI_PE32_SECTION;\r
-\r
-//\r
-// ////////////////////////////////////////////////////////////////////////////\r
-//\r
-// PIC section\r
-//\r
-typedef struct {\r
- EFI_COMMON_SECTION_HEADER CommonHeader;\r
-} EFI_PIC_SECTION;\r
-\r
-//\r
-// ////////////////////////////////////////////////////////////////////////////\r
-//\r
-// PEIM header section\r
-//\r
-typedef struct {\r
- EFI_COMMON_SECTION_HEADER CommonHeader;\r
-} EFI_PEIM_HEADER_SECTION;\r
-\r
-//\r
-// ////////////////////////////////////////////////////////////////////////////\r
-//\r
-// DEPEX section\r
-//\r
-typedef struct {\r
- EFI_COMMON_SECTION_HEADER CommonHeader;\r
-} EFI_DEPEX_SECTION;\r
-\r
-//\r
-// ////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Version section\r
-//\r
-typedef struct {\r
- EFI_COMMON_SECTION_HEADER CommonHeader;\r
- UINT16 BuildNumber;\r
- INT16 VersionString[1];\r
-} EFI_VERSION_SECTION;\r
-\r
-//\r
-// ////////////////////////////////////////////////////////////////////////////\r
-//\r
-// User interface section\r
-//\r
-typedef struct {\r
- EFI_COMMON_SECTION_HEADER CommonHeader;\r
- INT16 FileNameString[1];\r
-} EFI_USER_INTERFACE_SECTION;\r
-\r
-//\r
-// ////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Code16 section\r
-//\r
-typedef struct {\r
- EFI_COMMON_SECTION_HEADER CommonHeader;\r
-} EFI_CODE16_SECTION;\r
-\r
-//\r
-// ////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Firmware Volume Image section\r
-//\r
-typedef struct {\r
- EFI_COMMON_SECTION_HEADER CommonHeader;\r
-} EFI_FIRMWARE_VOLUME_IMAGE_SECTION;\r
-\r
-//\r
-// ////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Freeform subtype GUID section\r
-//\r
-typedef struct {\r
- EFI_COMMON_SECTION_HEADER CommonHeader;\r
- EFI_GUID SubTypeGuid;\r
-} EFI_FREEFORM_SUBTYPE_GUID_SECTION;\r
-\r
-//\r
-// ////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Raw section\r
-//\r
-typedef struct {\r
- EFI_COMMON_SECTION_HEADER CommonHeader;\r
-} EFI_RAW_SECTION;\r
-\r
-//\r
-// undo the pragma from the beginning...\r
-//\r
-#pragma pack()\r
-\r
-typedef union {\r
- EFI_COMMON_SECTION_HEADER *CommonHeader;\r
- EFI_COMPRESSION_SECTION *CompressionSection;\r
- EFI_GUID_DEFINED_SECTION *GuidDefinedSection;\r
- EFI_PE32_SECTION *Pe32Section;\r
- EFI_PIC_SECTION *PicSection;\r
- EFI_PEIM_HEADER_SECTION *PeimHeaderSection;\r
- EFI_DEPEX_SECTION *DependencySection;\r
- EFI_VERSION_SECTION *VersionSection;\r
- EFI_USER_INTERFACE_SECTION *UISection;\r
- EFI_CODE16_SECTION *Code16Section;\r
- EFI_FIRMWARE_VOLUME_IMAGE_SECTION *FVImageSection;\r
- EFI_FREEFORM_SUBTYPE_GUID_SECTION *FreeformSubtypeSection;\r
- EFI_RAW_SECTION *RawSection;\r
-} EFI_FILE_SECTION_POINTER;\r
-\r
-#endif\r