176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** @file 276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman The firmware file related definitions in PI. 376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Copyright (c) 2006 - 2008, Intel Corporation 576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman All rights reserved. This program and the accompanying materials 676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman are licensed and made available under the terms and conditions of the BSD License 776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman which accompanies this distribution. The full text of the license may be found at 876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman http://opensource.org/licenses/bsd-license.php 976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @par Revision Reference: 1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman PI Version 1.0 1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef __PI_FIRMWARE_FILE_H__ 2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define __PI_FIRMWARE_FILE_H__ 2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include <gpxe/efi/ProcessorBind.h> 2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#pragma pack(1) 2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Used to verify the integrity of the file. 2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef union { 2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct { 3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT8 Header; 3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT8 File; 3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman } Checksum; 3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT16 Checksum16; 3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} EFI_FFS_INTEGRITY_CHECK; 3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef UINT8 EFI_FV_FILETYPE; 3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef UINT8 EFI_FFS_FILE_ATTRIBUTES; 3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef UINT8 EFI_FFS_FILE_STATE; 3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// File Types Definitions 4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_ALL 0x00 4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_RAW 0x01 4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_FREEFORM 0x02 4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_SECURITY_CORE 0x03 4776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_PEI_CORE 0x04 4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_DXE_CORE 0x05 4976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_PEIM 0x06 5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_DRIVER 0x07 5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER 0x08 5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_APPLICATION 0x09 5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE 0x0B 5476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_OEM_MIN 0xc0 5576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_OEM_MAX 0xdf 5676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_DEBUG_MIN 0xe0 5776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_DEBUG_MAX 0xef 5876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_FFS_MIN 0xf0 5976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_FFS_MAX 0xff 6076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FV_FILETYPE_FFS_PAD 0xf0 6176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 6276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// FFS File Attributes. 6376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 6476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define FFS_ATTRIB_FIXED 0x04 6576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define FFS_ATTRIB_DATA_ALIGNMENT 0x38 6676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define FFS_ATTRIB_CHECKSUM 0x40 6776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 6876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 6976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// FFS File State Bits. 7076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 7176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FILE_HEADER_CONSTRUCTION 0x01 7276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FILE_HEADER_VALID 0x02 7376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FILE_DATA_VALID 0x04 7476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FILE_MARKED_FOR_UPDATE 0x08 7576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FILE_DELETED 0x10 7676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_FILE_HEADER_INVALID 0x20 7776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 7876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 7976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 8076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Each file begins with the header that describe the 8176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// contents and state of the files. 8276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 8376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef struct { 8476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_GUID Name; 8576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_FFS_INTEGRITY_CHECK IntegrityCheck; 8676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_FV_FILETYPE Type; 8776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_FFS_FILE_ATTRIBUTES Attributes; 8876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT8 Size[3]; 8976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_FFS_FILE_STATE State; 9076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} EFI_FFS_FILE_HEADER; 9176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 9276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 9376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef UINT8 EFI_SECTION_TYPE; 9476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 9576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 9676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Pseudo type. It is 9776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// used as a wild card when retrieving sections. The section 9876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// type EFI_SECTION_ALL matches all section types. 9976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 10076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SECTION_ALL 0x00 10176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 10276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 10376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Encapsulation section Type values 10476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 10576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SECTION_COMPRESSION 0x01 10676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 10776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SECTION_GUID_DEFINED 0x02 10876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 10976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 11076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Leaf section Type values 11176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 11276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SECTION_PE32 0x10 11376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SECTION_PIC 0x11 11476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SECTION_TE 0x12 11576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SECTION_DXE_DEPEX 0x13 11676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SECTION_VERSION 0x14 11776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SECTION_USER_INTERFACE 0x15 11876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SECTION_COMPATIBILITY16 0x16 11976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE 0x17 12076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SECTION_FREEFORM_SUBTYPE_GUID 0x18 12176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SECTION_RAW 0x19 12276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SECTION_PEI_DEPEX 0x1B 12376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 12476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 12576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Common section header 12676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 12776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef struct { 12876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT8 Size[3]; 12976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_SECTION_TYPE Type; 13076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} EFI_COMMON_SECTION_HEADER; 13176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 13276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 13376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Leaf section type that contains an 13476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// IA-32 16-bit executable image. 13576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 13676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef EFI_COMMON_SECTION_HEADER EFI_COMPATIBILITY16_SECTION; 13776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 13876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 13976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// CompressionType of EFI_COMPRESSION_SECTION. 14076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 14176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_NOT_COMPRESSED 0x00 14276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_STANDARD_COMPRESSION 0x01 14376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 14476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// An encapsulation section type in which the 14576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// section data is compressed. 14676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 14776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef struct { 14876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_COMMON_SECTION_HEADER CommonHeader; 14976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT32 UncompressedLength; 15076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT8 CompressionType; 15176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} EFI_COMPRESSION_SECTION; 15276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 15376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 15476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Leaf section which could be used to determine the dispatch order of DXEs. 15576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 15676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef EFI_COMMON_SECTION_HEADER EFI_DXE_DEPEX_SECTION; 15776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 15876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 15976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Leaf section which contains a PI FV. 16076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 16176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef EFI_COMMON_SECTION_HEADER EFI_FIRMWARE_VOLUME_IMAGE_SECTION; 16276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 16376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 16476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Leaf section which contains a single GUID. 16576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 16676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef struct { 16776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_COMMON_SECTION_HEADER CommonHeader; 16876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_GUID SubTypeGuid; 16976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} EFI_FREEFORM_SUBTYPE_GUID_SECTION; 17076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 17176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 17276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Attributes of EFI_GUID_DEFINED_SECTION 17376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 17476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED 0x01 17576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID 0x02 17676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 17776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Leaf section which is encapsulation defined by specific GUID 17876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 17976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef struct { 18076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_COMMON_SECTION_HEADER CommonHeader; 18176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_GUID SectionDefinitionGuid; 18276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT16 DataOffset; 18376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT16 Attributes; 18476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} EFI_GUID_DEFINED_SECTION; 18576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 18676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 18776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Leaf section which contains PE32+ image. 18876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 18976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef EFI_COMMON_SECTION_HEADER EFI_PE32_SECTION; 19076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 19176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 19276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 19376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Leaf section which used to determine the dispatch order of PEIMs. 19476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 19576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef EFI_COMMON_SECTION_HEADER EFI_PEI_DEPEX_SECTION; 19676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 19776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 19876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Leaf section which constains the position-independent-code image. 19976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 20076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef EFI_COMMON_SECTION_HEADER EFI_TE_SECTION; 20176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 20276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 20376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Leaf section which contains an array of zero or more bytes. 20476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 20576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef EFI_COMMON_SECTION_HEADER EFI_RAW_SECTION; 20676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 20776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 20876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Leaf section which contains a unicode string that 20976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// is human readable file name. 21076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 21176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef struct { 21276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_COMMON_SECTION_HEADER CommonHeader; 21376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 21476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 21576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// Array of unicode string. 21676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 21776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman CHAR16 FileNameString[1]; 21876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} EFI_USER_INTERFACE_SECTION; 21976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 22076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 22176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 22276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Leaf section which contains a numeric build number and 22376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// an optional unicode string that represents the file revision. 22476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 22576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef struct { 22676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_COMMON_SECTION_HEADER CommonHeader; 22776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT16 BuildNumber; 22876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 22976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 23076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// Array of unicode string. 23176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 23276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman CHAR16 VersionString[1]; 23376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} EFI_VERSION_SECTION; 23476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 23576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 23676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define SECTION_SIZE(SectionHeaderPtr) \ 23776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) SectionHeaderPtr)->Size) & 0x00ffffff)) 23876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 23976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#pragma pack() 24076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 24176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif 24276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 243