]> 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
   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
   @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
 #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
 //\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
 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
 // \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
 // 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
 } 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
 // 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
 } 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
 // 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
 } 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
 // 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
 \r
   //\r
   // Array of unicode string.\r
   // \r
-  CHAR16 FileNameString[1];\r
+  CHAR16                      FileNameString[1];\r
 } EFI_USER_INTERFACE_SECTION;\r
 \r
 \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
 // 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
 } 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
 #endif\r
 \r