]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Pi/PiFirmwareFile.h
Add pack(1) for section header structure.
[mirror_edk2.git] / MdePkg / Include / Pi / PiFirmwareFile.h
index db4167263bc10f8e388ca5ab768aa4e06562e0b1..6487ae943d96bd92e6a7a4518ce2a258722ff6cf 100644 (file)
@@ -10,8 +10,6 @@
   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:  PiFirmwareFile.h\r
-\r
   @par Revision Reference:\r
   Version 1.0.\r
 \r
@@ -20,6 +18,7 @@
 #ifndef __PI_FIRMWARE_FILE_H__\r
 #define __PI_FIRMWARE_FILE_H__\r
 \r
+#pragma pack(1)\r
 //\r
 // Used to verify the integrity of the file.\r
 // \r
@@ -35,6 +34,26 @@ typedef UINT8 EFI_FV_FILETYPE;
 typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;\r
 typedef UINT8 EFI_FFS_FILE_STATE;\r
 \r
+//\r
+// File Types Definitions\r
+// \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
+#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE 0x0B\r
+#define EFI_FV_FILETYPE_OEM_MIN               0xc0\r
+#define EFI_FV_FILETYPE_OEM_MAX               0xdf\r
+#define EFI_FV_FILETYPE_DEBUG_MIN             0xe0\r
+#define EFI_FV_FILETYPE_DEBUG_MAX             0xef\r
+#define EFI_FV_FILETYPE_FFS_MIN               0xf0\r
+#define EFI_FV_FILETYPE_FFS_MAX               0xff\r
+#define EFI_FV_FILETYPE_FFS_PAD               0xf0\r
 // \r
 // FFS File Attributes.\r
 // \r
@@ -119,9 +138,9 @@ typedef EFI_COMMON_SECTION_HEADER EFI_COMPATIBILITY16_SECTION;
 // section data is compressed.\r
 // \r
 typedef struct {\r
-  EFI_COMMON_SECTION_HEADER CommonHeader;\r
-  UINT32  UncompressedLength;\r
-  UINT8   CompressionType;\r
+  EFI_COMMON_SECTION_HEADER   CommonHeader;\r
+  UINT32                      UncompressedLength;\r
+  UINT8                       CompressionType;\r
 } EFI_COMPRESSION_SECTION;\r
 \r
 //\r
@@ -138,8 +157,8 @@ typedef EFI_COMMON_SECTION_HEADER EFI_FIRMWARE_VOLUME_IMAGE_SECTION;
 // Leaf section which contains a single GUID.\r
 // \r
 typedef struct {\r
-  EFI_COMMON_SECTION_HEADER CommonHeader;\r
-  EFI_GUID  SubTypeGuid;\r
+  EFI_COMMON_SECTION_HEADER   CommonHeader;\r
+  EFI_GUID                    SubTypeGuid;\r
 } EFI_FREEFORM_SUBTYPE_GUID_SECTION;\r
 \r
 //\r
@@ -151,10 +170,10 @@ typedef struct {
 // Leaf section which is encapsulation defined by specific GUID\r
 // \r
 typedef struct {\r
-  EFI_COMMON_SECTION_HEADER CommonHeader;\r
-  EFI_GUID  SectionDefinitionGuid;\r
-  UINT16    DataOffset;\r
-  UINT16    Attributes;\r
+  EFI_COMMON_SECTION_HEADER   CommonHeader;\r
+  EFI_GUID                    SectionDefinitionGuid;\r
+  UINT16                      DataOffset;\r
+  UINT16                      Attributes;\r
 } EFI_GUID_DEFINED_SECTION;\r
 \r
 //\r
@@ -183,12 +202,12 @@ typedef EFI_COMMON_SECTION_HEADER EFI_RAW_SECTION;
 // is human readable file name.\r
 // \r
 typedef struct {\r
-  EFI_COMMON_SECTION_HEADER CommonHeader;\r
+  EFI_COMMON_SECTION_HEADER   CommonHeader;\r
 \r
   //\r
   // Array of unicode string.\r
   // \r
-  CHAR16 FileNameString[1];\r
+  CHAR16                      FileNameString[1];\r
 } EFI_USER_INTERFACE_SECTION;\r
 \r
 \r
@@ -197,10 +216,16 @@ typedef struct {
 // an optional unicode string that represent the file revision. \r
 // \r
 typedef struct {\r
-  EFI_COMMON_SECTION_HEADER CommonHeader;\r
-  UINT16  BuildNumber;\r
-  CHAR16  VersionString[1];\r
+  EFI_COMMON_SECTION_HEADER   CommonHeader;\r
+  UINT16                      BuildNumber;\r
+  CHAR16                      VersionString[1];\r
 } EFI_VERSION_SECTION;\r
 \r
+\r
+#define SECTION_SIZE(SectionHeaderPtr) \\r
+    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) SectionHeaderPtr)->Size) & 0x00ffffff))\r
+\r
+#pragma pack()\r
+\r
 #endif\r
 \r