Clean up include directory.
authorlgao4 <lgao4@7335b38e-4728-0410-8992-fb3ffe349368>
Mon, 6 Aug 2007 08:34:37 +0000 (08:34 +0000)
committerlgao4 <lgao4@7335b38e-4728-0410-8992-fb3ffe349368>
Mon, 6 Aug 2007 08:34:37 +0000 (08:34 +0000)
git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@505 7335b38e-4728-0410-8992-fb3ffe349368

35 files changed:
Source/C/Common/EfiUtilityMsgs.c
Source/C/Common/EfiUtilityMsgs.h
Source/C/Common/FvLib.h
Source/C/Common/SimpleFileParsing.c
Source/C/EfiRom/EfiRom.c
Source/C/GenFfs/GenFfs.c
Source/C/GenFv/GenFvInternalLib.c
Source/C/GenFv/GenFvInternalLib.h
Source/C/GenFw/GenFw.c
Source/C/GenSec/GenSec.c
Source/C/GenVtf/GenVtf.h
Source/C/Include/Common/BaseTypes.h
Source/C/Include/Common/Dependency.h [deleted file]
Source/C/Include/Common/FirmwareVolumeImageFormat.h [deleted file]
Source/C/Include/Common/InternalFormRepresentation.h [deleted file]
Source/C/Include/Common/MultiPhase.h [deleted file]
Source/C/Include/Common/PiFirmwareFile.h [new file with mode: 0644]
Source/C/Include/Common/PiFirmwareFileSystem.h [deleted file]
Source/C/Include/Common/PiFirmwareVolume.h [moved from Source/C/Include/Common/PiFirmwareVolumeHeader.h with 80% similarity]
Source/C/Include/Common/UefiBaseTypes.h
Source/C/Include/Common/Variable.h [deleted file]
Source/C/Include/Common/WorkingBlockHeader.h [deleted file]
Source/C/Include/Guid/AcpiTableStorage.h [deleted file]
Source/C/Include/Guid/Apriori.h [deleted file]
Source/C/Include/Guid/Capsule.h [deleted file]
Source/C/Include/Guid/PiFirmwareFileSystem.h
Source/C/Include/IndustryStandard/PeImage.h [new file with mode: 0644]
Source/C/Include/Protocol/DevicePath.h [deleted file]
Source/C/Include/Protocol/GuidedSectionExtraction.h
Source/C/Include/Protocol/Hii.h [deleted file]
Source/C/Include/Protocol/UgaDraw.h [deleted file]
Source/C/MSmakefile.common
Source/C/Makefile
Source/C/PeCoffLoader/BasePeCoff.c
Source/C/PeCoffLoader/PeCoffLoaderEx.c

index 566d214..e7750cb 100644 (file)
@@ -27,8 +27,6 @@ Abstract:
 \r
 #include "EfiUtilityMsgs.h"\r
 \r
-#define MAX_LINE_LEN  200\r
-\r
 //\r
 // Declare module globals for keeping track of the the utility's\r
 // name and other settings.\r
index a76b822..8ef9ee2 100644 (file)
@@ -34,6 +34,8 @@ Abstract:
 \r
 typedef int STATUS;\r
 \r
+#define MAX_LINE_LEN  0x200\r
+\r
 #ifdef __cplusplus\r
 extern "C" {\r
 #endif\r
index f0dbffa..eda9bf8 100644 (file)
@@ -28,10 +28,8 @@ Abstract:
 #include <string.h>\r
 \r
 #include <Common/UefiBaseTypes.h>\r
-#include <Common/FirmwareVolumeImageFormat.h>\r
-#include <Common/PiFirmwareFileSystem.h>\r
-#include <Common/PiFirmwareVolumeHeader.h>\r
-#include <Common/MultiPhase.h>\r
+#include <Common/PiFirmwareFile.h>\r
+#include <Common/PiFirmwareVolume.h>\r
 \r
 EFI_STATUS\r
 InitializeFvLib (\r
index 73b74cd..65cc02c 100644 (file)
@@ -39,8 +39,6 @@ Abstract:
 //\r
 #define MAX_STRING_IDENTIFIER_NAME  100\r
 \r
-#define MAX_LINE_LEN                400\r
-\r
 #define T_CHAR_SPACE                ' '\r
 #define T_CHAR_NULL                 0\r
 #define T_CHAR_CR                   '\r'\r
index f840288..2ccc74d 100644 (file)
@@ -26,8 +26,7 @@ Abstract:
 #include <stdlib.h>\r
 \r
 #include <Common/UefiBaseTypes.h>\r
-#include <Common/EfiImage.h>  // for PE32 structure definitions\r
-#include <Common/MultiPhase.h>\r
+#include <IndustryStandard/PeImage.h> // for PE32 structure definitions\r
 \r
 #include <IndustryStandard/pci22.h>  // for option ROM header structures\r
 #include <IndustryStandard/pci30.h>\r
index 10b7ad0..f0ac3b1 100644 (file)
@@ -25,8 +25,7 @@ Abstract:
 #include <string.h>\r
 \r
 #include <Common/UefiBaseTypes.h>\r
-#include <Common/FirmwareVolumeImageFormat.h>\r
-#include <Common/PiFirmwareFileSystem.h>\r
+#include <Common/PiFirmwareFile.h>\r
 \r
 #include "CommonLib.h"\r
 #include "EfiUtilityMsgs.h"\r
index 75497d5..a8cf2fa 100644 (file)
@@ -1597,7 +1597,7 @@ Returns:
   FvHeader->FvLength        = FvImageSize;\r
   FvHeader->Signature       = EFI_FVH_SIGNATURE;\r
   FvHeader->Attributes      = FvInfo.FvAttributes;\r
-  FvHeader->Revision        = EFI_FVH_PI_REVISION;\r
+  FvHeader->Revision        = EFI_FVH_REVISION;\r
   FvHeader->ExtHeaderOffset = 0;\r
   FvHeader->Reserved[0]     = 0;\r
   \r
index 1256697..df173d1 100644 (file)
@@ -29,15 +29,13 @@ Abstract:
 #include <stdlib.h>\r
 \r
 #include <Common/UefiBaseTypes.h>\r
-#include <Common/MultiPhase.h>\r
 #include <Common/UefiCapsule.h>\r
 \r
-#include <Common/FirmwareVolumeImageFormat.h>\r
-#include <Common/PiFirmwareVolumeHeader.h>\r
-#include <Common/PiFirmwareFileSystem.h>\r
+#include <Common/PiFirmwareFile.h>\r
+#include <Common/PiFirmwareVolume.h>\r
 #include <Guid/PiFirmwareFileSystem.h>\r
 \r
-#include <Common/EfiImage.h>\r
+#include <IndustryStandard/PeImage.h>\r
 #include <Library/PeCoffLib.h>\r
 \r
 #include "CommonLib.h"\r
index 53ef981..349b3ce 100644 (file)
@@ -43,19 +43,20 @@ Abstract:
 #endif
 \r
 #include <Common/UefiBaseTypes.h>\r
-#include <Common/EfiImage.h>\r
-\r
-#include "CommonLib.h"\r
-#include "EfiUtilityMsgs.c"\r
+#include <IndustryStandard/PeImage.h>\r
 \r
 //\r
 // Acpi Table definition\r
 //\r
-#include "Acpi.h"\r
-#include "Acpi1_0.h"\r
-#include "Acpi2_0.h"\r
-#include "Acpi3_0.h"\r
-#include "MemoryMappedConfigurationSpaceAccessTable.h"\r
+#include <IndustryStandard/Acpi.h>\r
+#include <IndustryStandard/Acpi1_0.h>\r
+#include <IndustryStandard/Acpi2_0.h>\r
+#include <IndustryStandard/Acpi3_0.h>\r
+#include <IndustryStandard/MemoryMappedConfigurationSpaceAccessTable.h>\r
+\r
+\r
+#include "CommonLib.h"\r
+#include "EfiUtilityMsgs.h"\r
 \r
 //\r
 // Version of this utility\r
index 22be5db..7bcacc0 100644 (file)
@@ -24,7 +24,7 @@ Abstract:
 #include <string.h>\r
 \r
 #include <Common/UefiBaseTypes.h>\r
-#include <Common/FirmwareVolumeImageFormat.h>\r
+#include <Common/PiFirmwareFile.h>\r
 #include <Protocol/GuidedSectionExtraction.h>\r
 \r
 #include "CommonLib.h"\r
index a460a7c..35cb5a2 100644 (file)
@@ -34,9 +34,7 @@ Abstract:
 #include <stdlib.h>\r
 #include <string.h>\r
 #include "assert.h"\r
-// #include "TianoCommon.h"\r
-#include "Common/PiFirmwareFileSystem.h"\r
-#include "Common/PiFirmwareVolumeHeader.h"\r
+#include <Common/PiFirmwareFile.h>\r
 #include "ParseInf.h"\r
 \r
 //\r
index b87e714..a75762f 100644 (file)
 #include <ProcessorBind.h>\r
 #include <stdarg.h>\r
 \r
-#define MEMORY_FENCE()  MemoryFence ()\r
-#define BREAKPOINT()    CpuBreakpoint ()\r
-#define DEADLOOP()      CpuDeadLoop ()\r
-\r
 typedef struct {\r
   UINT32  Data1;\r
   UINT16  Data2;\r
@@ -136,6 +132,11 @@ typedef struct {
 \r
 #endif\r
 \r
+//\r
+// Macro that returns the byte offset of a field in a data structure. \r
+//\r
+#define OFFSET_OF(TYPE, Field) ((UINTN) &(((TYPE *)0)->Field))\r
+\r
 ///\r
 ///  CONTAINING_RECORD - returns a pointer to the structure\r
 ///      from one of it's elements.\r
@@ -145,7 +146,7 @@ typedef struct {
 ///\r
 ///  ALIGN_POINTER - aligns a pointer to the lowest boundry\r
 ///\r
-#define ALIGN_POINTER(p, s) ((VOID *) ((p) + (((s) - ((UINTN) (p))) & ((s) - 1))))\r
+#define ALIGN_POINTER(p, s) ((VOID *) ((UINTN)(p) + (((s) - ((UINTN) (p))) & ((s) - 1))))\r
 \r
 ///\r
 ///  ALIGN_VARIABLE - aligns a variable up to the next natural boundry for int size of a processor\r
@@ -157,6 +158,24 @@ typedef struct {
   } \\r
   (Value) = (UINTN)((UINTN) (Value) + (UINTN) (Adjustment))\r
 \r
+//\r
+// Return the maximum of two operands. \r
+// This macro returns the maximum of two operand specified by a and b.  \r
+// Both a and b must be the same numerical types, signed or unsigned.\r
+//\r
+#define MAX(a, b)                       \\r
+  (((a) > (b)) ? (a) : (b))\r
+\r
+\r
+//\r
+// Return the minimum of two operands. \r
+// This macro returns the minimal of two operand specified by a and b.  \r
+// Both a and b must be the same numerical types, signed or unsigned.\r
+//\r
+#define MIN(a, b)                       \\r
+  (((a) < (b)) ? (a) : (b))\r
+\r
+\r
 //\r
 // EFI Error Codes common to all execution phases\r
 //\r
diff --git a/Source/C/Include/Common/Dependency.h b/Source/C/Include/Common/Dependency.h
deleted file mode 100644 (file)
index 744027d..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/** @file\r
-  This module contains data specific to dependency expressions\r
-  and local function prototypes.\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:  Dependency.h\r
-\r
-**/\r
-\r
-#ifndef __DEPENDENCY_H__\r
-#define __DEPENDENCY_H__\r
-\r
-/// EFI_DEP_BEFORE       - If present, this must be the first and only opcode\r
-#define EFI_DEP_BEFORE        0x00\r
-\r
-/// EFI_DEP_AFTER        - If present, this must be the first and only opcode\r
-#define EFI_DEP_AFTER         0x01\r
-\r
-#define EFI_DEP_PUSH          0x02\r
-#define EFI_DEP_AND           0x03\r
-#define EFI_DEP_OR            0x04\r
-#define EFI_DEP_NOT           0x05\r
-#define EFI_DEP_TRUE          0x06\r
-#define EFI_DEP_FALSE         0x07\r
-#define EFI_DEP_END           0x08\r
-\r
-/// EFI_DEP_SOR          - If present, this must be the first opcode\r
-#define EFI_DEP_SOR           0x09\r
-\r
-///\r
-/// EFI_DEP_REPLACE_TRUE - Used to dynamically patch the dependecy expression\r
-///                        to save time.  A EFI_DEP_PUSH is evauated one an\r
-///                        replaced with EFI_DEP_REPLACE_TRUE\r
-///\r
-#define EFI_DEP_REPLACE_TRUE  0xff\r
-\r
-///\r
-/// Define the initial size of the dependency expression evaluation stack\r
-///\r
-#define DEPEX_STACK_SIZE_INCREMENT  0x1000\r
-\r
-#endif\r
diff --git a/Source/C/Include/Common/FirmwareVolumeImageFormat.h b/Source/C/Include/Common/FirmwareVolumeImageFormat.h
deleted file mode 100644 (file)
index 7985d58..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-/** @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
-// PAD file type\r
-//\r
-#define EFI_FV_FILETYPE_FFS_PAD               0xF0\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
diff --git a/Source/C/Include/Common/InternalFormRepresentation.h b/Source/C/Include/Common/InternalFormRepresentation.h
deleted file mode 100644 (file)
index bf3d824..0000000
+++ /dev/null
@@ -1,422 +0,0 @@
-/** @file\r
-  This file defines the encoding for the VFR (Visual Form Representation) language.\r
-  IFR is primarily consumed by the EFI presentation engine, and produced by EFI\r
-  internal application and drivers as well as all add-in card option-ROM drivers\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:  InternalFormRepresentation.h\r
-\r
-  @par Revision Reference:\r
-  These definitions are from Human Interface Infrastructure Spec Version 0.92.\r
-\r
-**/\r
-\r
-#ifndef __EFI_INTERNAL_FORM_REPRESENTATION_H__\r
-#define __EFI_INTERNAL_FORM_REPRESENTATION_H__\r
-\r
-//\r
-// The following types are currently defined:\r
-//\r
-typedef UINT32  RELOFST;\r
-typedef CHAR16  *EFI_STRING;\r
-\r
-//\r
-// IFR Op codes\r
-//\r
-#define EFI_IFR_FORM_OP                 0x01\r
-#define EFI_IFR_SUBTITLE_OP             0x02\r
-#define EFI_IFR_TEXT_OP                 0x03\r
-#define EFI_IFR_GRAPHIC_OP              0x04\r
-#define EFI_IFR_ONE_OF_OP               0x05\r
-#define EFI_IFR_CHECKBOX_OP             0x06\r
-#define EFI_IFR_NUMERIC_OP              0x07\r
-#define EFI_IFR_PASSWORD_OP             0x08\r
-#define EFI_IFR_ONE_OF_OPTION_OP        0x09  // ONEOF OPTION field\r
-#define EFI_IFR_SUPPRESS_IF_OP          0x0A\r
-#define EFI_IFR_END_FORM_OP             0x0B\r
-#define EFI_IFR_HIDDEN_OP               0x0C\r
-#define EFI_IFR_END_FORM_SET_OP         0x0D\r
-#define EFI_IFR_FORM_SET_OP             0x0E\r
-#define EFI_IFR_REF_OP                  0x0F\r
-#define EFI_IFR_END_ONE_OF_OP           0x10\r
-#define EFI_IFR_END_OP                  EFI_IFR_END_ONE_OF_OP\r
-#define EFI_IFR_INCONSISTENT_IF_OP      0x11\r
-#define EFI_IFR_EQ_ID_VAL_OP            0x12\r
-#define EFI_IFR_EQ_ID_ID_OP             0x13\r
-#define EFI_IFR_EQ_ID_LIST_OP           0x14\r
-#define EFI_IFR_AND_OP                  0x15\r
-#define EFI_IFR_OR_OP                   0x16\r
-#define EFI_IFR_NOT_OP                  0x17\r
-#define EFI_IFR_END_IF_OP               0x18  // for endif of inconsistentif, suppressif, grayoutif\r
-#define EFI_IFR_GRAYOUT_IF_OP           0x19\r
-#define EFI_IFR_DATE_OP                 0x1A\r
-#define EFI_IFR_TIME_OP                 0x1B\r
-#define EFI_IFR_STRING_OP               0x1C\r
-#define EFI_IFR_LABEL_OP                0x1D\r
-#define EFI_IFR_SAVE_DEFAULTS_OP        0x1E\r
-#define EFI_IFR_RESTORE_DEFAULTS_OP     0x1F\r
-#define EFI_IFR_BANNER_OP               0x20\r
-#define EFI_IFR_INVENTORY_OP            0x21\r
-#define EFI_IFR_EQ_VAR_VAL_OP           0x22\r
-#define EFI_IFR_ORDERED_LIST_OP         0x23\r
-#define EFI_IFR_VARSTORE_OP             0x24\r
-#define EFI_IFR_VARSTORE_SELECT_OP      0x25\r
-#define EFI_IFR_VARSTORE_SELECT_PAIR_OP 0x26\r
-#define EFI_IFR_TRUE_OP                 0x27\r
-#define EFI_IFR_FALSE_OP                0x28\r
-#define EFI_IFR_GT_OP                   0x29\r
-#define EFI_IFR_GE_OP                   0x2A\r
-#define EFI_IFR_OEM_DEFINED_OP          0x2B\r
-#define EFI_IFR_LAST_OPCODE             EFI_IFR_OEM_DEFINED_OP\r
-#define EFI_IFR_OEM_OP                  0xFE\r
-#define EFI_IFR_NV_ACCESS_COMMAND       0xFF\r
-\r
-//\r
-// Define values for the flags fields in some VFR opcodes. These are\r
-// bitmasks.\r
-//\r
-#define EFI_IFR_FLAG_DEFAULT              0x01\r
-#define EFI_IFR_FLAG_MANUFACTURING        0x02\r
-#define EFI_IFR_FLAG_INTERACTIVE          0x04\r
-#define EFI_IFR_FLAG_NV_ACCESS            0x08\r
-#define EFI_IFR_FLAG_RESET_REQUIRED       0x10\r
-#define EFI_IFR_FLAG_LATE_CHECK           0x20\r
-\r
-#define EFI_NON_DEVICE_CLASS              0x00  // Useful when you do not want something in the Device Manager\r
-#define EFI_DISK_DEVICE_CLASS             0x01\r
-#define EFI_VIDEO_DEVICE_CLASS            0x02\r
-#define EFI_NETWORK_DEVICE_CLASS          0x04\r
-#define EFI_INPUT_DEVICE_CLASS            0x08\r
-#define EFI_ON_BOARD_DEVICE_CLASS         0x10\r
-#define EFI_OTHER_DEVICE_CLASS            0x20\r
-\r
-#define EFI_SETUP_APPLICATION_SUBCLASS    0x00\r
-#define EFI_GENERAL_APPLICATION_SUBCLASS  0x01\r
-#define EFI_FRONT_PAGE_SUBCLASS           0x02\r
-#define EFI_SINGLE_USE_SUBCLASS           0x03  // Used to display a single entity and then exit\r
-\r
-//\r
-// Used to flag dynamically created op-codes. This is meaningful to the IFR Library set\r
-// and the browser since we need to distinguish between compiled NV map data and created data.\r
-// We do not allow new entries to be created in the NV map dynamically however we still need\r
-// to display this information correctly.  To dynamically create op-codes and assume that their\r
-// data will be saved, ensure that the NV starting location they refer to is pre-defined in the\r
-// NV map.\r
-//\r
-#define EFI_IFR_FLAG_CREATED  128\r
-\r
-#pragma pack(1)\r
-//\r
-// IFR Structure definitions\r
-//\r
-typedef struct {\r
-  UINT8 OpCode;\r
-  UINT8 Length;\r
-} EFI_IFR_OP_HEADER;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER     Header;\r
-  EFI_GUID              Guid;\r
-  STRING_REF            FormSetTitle;\r
-  STRING_REF            Help;\r
-  EFI_PHYSICAL_ADDRESS  CallbackHandle;\r
-  UINT16                Class;\r
-  UINT16                SubClass;\r
-  UINT16                NvDataSize; // set once, size of the NV data as defined in the script\r
-} EFI_IFR_FORM_SET;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT16            FormId;\r
-  STRING_REF        FormTitle;\r
-} EFI_IFR_FORM;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT16            LabelId;\r
-} EFI_IFR_LABEL;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  STRING_REF        SubTitle;\r
-} EFI_IFR_SUBTITLE;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  STRING_REF        Help;\r
-  STRING_REF        Text;\r
-  STRING_REF        TextTwo;\r
-  UINT8             Flags;          // This is included solely for purposes of interactive/dynamic support.\r
-  UINT16            Key;            // Value to be passed to caller to identify this particular op-code\r
-} EFI_IFR_TEXT;\r
-\r
-//\r
-// goto\r
-//\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT16            FormId;\r
-  STRING_REF        Prompt;\r
-  STRING_REF        Help;   // The string Token for the context-help\r
-  UINT8             Flags;  // This is included solely for purposes of interactive/dynamic support.\r
-  UINT16            Key;    // Value to be passed to caller to identify this particular op-code\r
-} EFI_IFR_REF;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_END_FORM;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_END_FORM_SET;\r
-\r
-//\r
-// Also notice that the IFR_ONE_OF and IFR_CHECK_BOX are identical in structure......code assumes this to be true, if this ever\r
-// changes we need to revisit the InitializeTagStructures code\r
-//\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT16            QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name\r
-  UINT8             Width;      // The Size of the Data being saved\r
-  STRING_REF        Prompt;     // The String Token for the Prompt\r
-  STRING_REF        Help;       // The string Token for the context-help\r
-} EFI_IFR_ONE_OF;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT16            QuestionId; // The offset in NV for storage of the data\r
-  UINT8             MaxEntries; // The maximum number of options in the ordered list (=size of NVStore)\r
-  STRING_REF        Prompt;     // The string token for the prompt\r
-  STRING_REF        Help;       // The string token for the context-help\r
-} EFI_IFR_ORDERED_LIST;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT16            QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name\r
-  UINT8             Width;      // The Size of the Data being saved\r
-  STRING_REF        Prompt;     // The String Token for the Prompt\r
-  STRING_REF        Help;       // The string Token for the context-help\r
-  UINT8             Flags;      // For now, if non-zero, means that it is the default option, - further definition likely\r
-  UINT16            Key;        // Value to be passed to caller to identify this particular op-code\r
-} EFI_IFR_CHECKBOX, EFI_IFR_CHECK_BOX;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  STRING_REF        Option;     // The string token describing the option\r
-  UINT16            Value;      // The value associated with this option that is stored in the NVRAM if chosen\r
-  UINT8             Flags;      // For now, if non-zero, means that it is the default option, - further definition likely above\r
-  UINT16            Key;        // Value to be passed to caller to identify this particular op-code\r
-} EFI_IFR_ONE_OF_OPTION;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT16            QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name\r
-  UINT8             Width;      // The Size of the Data being saved\r
-  STRING_REF        Prompt;     // The String Token for the Prompt\r
-  STRING_REF        Help;       // The string Token for the context-help\r
-  UINT8             Flags;      // This is included solely for purposes of interactive/dynamic support.\r
-  UINT16            Key;        // Value to be passed to caller to identify this particular op-code\r
-  UINT16            Minimum;\r
-  UINT16            Maximum;\r
-  UINT16            Step;       // If step is 0, then manual input is specified, otherwise, left/right arrow selection is called for\r
-  UINT16            Default;\r
-} EFI_IFR_NUMERIC;\r
-\r
-//\r
-// There is an interesting twist with regards to Time and Date.  This is one of the few items which can accept input from\r
-// a user, however may or may not need to use storage in the NVRAM space.  The decided method for determining if NVRAM space\r
-// will be used (only for a TimeOp or DateOp) is:  If .QuestionId == 0 && .Width == 0 (normally an impossibility) then use system\r
-// resources to store the data away and not NV resources.  In other words, the setup engine will call gRT->SetTime, and gRT->SetDate\r
-// for the saving of data, and the values displayed will be from the gRT->GetXXXX series of calls.\r
-//\r
-typedef struct {\r
-  EFI_IFR_NUMERIC Hour;\r
-  EFI_IFR_NUMERIC Minute;\r
-  EFI_IFR_NUMERIC Second;\r
-} EFI_IFR_TIME;\r
-\r
-typedef struct {\r
-  EFI_IFR_NUMERIC Year;\r
-  EFI_IFR_NUMERIC Month;\r
-  EFI_IFR_NUMERIC Day;\r
-} EFI_IFR_DATE;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT16            QuestionId;   // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name\r
-  UINT8             Width;        // The Size of the Data being saved -- BUGBUG -- remove someday\r
-  STRING_REF        Prompt;       // The String Token for the Prompt\r
-  STRING_REF        Help;         // The string Token for the context-help\r
-  UINT8             Flags;        // This is included solely for purposes of interactive/dynamic support.\r
-  UINT16            Key;          // Value to be passed to caller to identify this particular op-code\r
-  UINT8             MinSize;      // Minimum allowable sized password\r
-  UINT8             MaxSize;      // Maximum allowable sized password\r
-  UINT16            Encoding;\r
-} EFI_IFR_PASSWORD;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT16            QuestionId;   // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name\r
-  UINT8             Width;        // The Size of the Data being saved -- BUGBUG -- remove someday\r
-  STRING_REF        Prompt;       // The String Token for the Prompt\r
-  STRING_REF        Help;         // The string Token for the context-help\r
-  UINT8             Flags;        // This is included solely for purposes of interactive/dynamic support.\r
-  UINT16            Key;          // Value to be passed to caller to identify this particular op-code\r
-  UINT8             MinSize;      // Minimum allowable sized password\r
-  UINT8             MaxSize;      // Maximum allowable sized password\r
-} EFI_IFR_STRING;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_END_ONE_OF;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT16            Value;\r
-  UINT16            Key;\r
-} EFI_IFR_HIDDEN;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT8             Flags;\r
-} EFI_IFR_SUPPRESS;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT8             Flags;\r
-} EFI_IFR_GRAY_OUT;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  STRING_REF        Popup;\r
-  UINT8             Flags;\r
-} EFI_IFR_INCONSISTENT;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT16            QuestionId;   // offset into variable storage\r
-  UINT8             Width;        // size of variable storage\r
-  UINT16            Value;        // value to compare against\r
-} EFI_IFR_EQ_ID_VAL;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT16            QuestionId;   // offset into variable storage\r
-  UINT8             Width;        // size of variable storage\r
-  UINT16            ListLength;\r
-  UINT16            ValueList[1];\r
-} EFI_IFR_EQ_ID_LIST;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT16            QuestionId1;  // offset into variable storage for first value to compare\r
-  UINT8             Width;        // size of variable storage (must be same for both)\r
-  UINT16            QuestionId2;  // offset into variable storage for second value to compare\r
-} EFI_IFR_EQ_ID_ID;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT16            VariableId;   // offset into variable storage\r
-  UINT16            Value;        // value to compare against\r
-} EFI_IFR_EQ_VAR_VAL;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_AND;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_OR;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_NOT;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_END_EXPR, EFI_IFR_END_IF;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT16            FormId;\r
-  STRING_REF        Prompt;\r
-  STRING_REF        Help;\r
-  UINT8             Flags;\r
-  UINT16            Key;\r
-} EFI_IFR_SAVE_DEFAULTS;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  STRING_REF        Help;\r
-  STRING_REF        Text;\r
-  STRING_REF        TextTwo;      // optional text\r
-} EFI_IFR_INVENTORY;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  EFI_GUID          Guid;         // GUID for the variable\r
-  UINT16            VarId;        // variable store ID, as referenced elsewhere in the form\r
-  UINT16            Size;         // size of the variable storage\r
-} EFI_IFR_VARSTORE;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT16            VarId;        // variable store ID, as referenced elsewhere in the form\r
-} EFI_IFR_VARSTORE_SELECT;\r
-\r
-//\r
-// Used for the ideqid VFR statement where two variable stores may be referenced in the\r
-// same VFR statement.\r
-// A browser should treat this as an EFI_IFR_VARSTORE_SELECT statement and assume that all following\r
-// IFR opcodes use the VarId as defined here.\r
-//\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  UINT16            VarId;          // variable store ID, as referenced elsewhere in the form\r
-  UINT16            SecondaryVarId; // variable store ID, as referenced elsewhere in the form\r
-} EFI_IFR_VARSTORE_SELECT_PAIR;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_TRUE;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_FALSE;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_GT;\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_GE;\r
-\r
-//\r
-// Save defaults and restore defaults have same structure\r
-//\r
-#define EFI_IFR_RESTORE_DEFAULTS  EFI_IFR_SAVE_DEFAULTS\r
-\r
-typedef struct {\r
-  EFI_IFR_OP_HEADER Header;\r
-  STRING_REF        Title;        // The string token for the banner title\r
-  UINT16            LineNumber;   // 1-based line number\r
-  UINT8             Alignment;    // left, center, or right-aligned\r
-} EFI_IFR_BANNER;\r
-\r
-#define EFI_IFR_BANNER_ALIGN_LEFT   0\r
-#define EFI_IFR_BANNER_ALIGN_CENTER 1\r
-#define EFI_IFR_BANNER_ALIGN_RIGHT  2\r
-#define EFI_IFR_BANNER_TIMEOUT      0xFF\r
-\r
-#pragma pack()\r
-\r
-#endif\r
diff --git a/Source/C/Include/Common/MultiPhase.h b/Source/C/Include/Common/MultiPhase.h
deleted file mode 100644 (file)
index 93867a5..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/** @file\r
-  This includes some definitions that will be used in both PEI and DXE phases.\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:  MultiPhase.h\r
-\r
-**/\r
-\r
-#ifndef __MULTI_PHASE_H__\r
-#define __MULTI_PHASE_H__\r
-\r
-//\r
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r
-//\r
-// Needed EFI defines for PEI\r
-//\r
-typedef UINT64  EFI_PHYSICAL_ADDRESS;\r
-\r
-typedef enum {\r
-  EfiReservedMemoryType,\r
-  EfiLoaderCode,\r
-  EfiLoaderData,\r
-  EfiBootServicesCode,\r
-  EfiBootServicesData,\r
-  EfiRuntimeServicesCode,\r
-  EfiRuntimeServicesData,\r
-  EfiConventionalMemory,\r
-  EfiUnusableMemory,\r
-  EfiACPIReclaimMemory,\r
-  EfiACPIMemoryNVS,\r
-  EfiMemoryMappedIO,\r
-  EfiMemoryMappedIOPortSpace,\r
-  EfiPalCode,\r
-  EfiMaxMemoryType\r
-} EFI_MEMORY_TYPE;\r
-\r
-typedef UINT32  EFI_STATUS_CODE_TYPE;\r
-typedef UINT32  EFI_STATUS_CODE_VALUE;\r
-\r
-typedef struct {\r
-  UINT16    HeaderSize;\r
-  UINT16    Size;\r
-  EFI_GUID  Type;\r
-} EFI_STATUS_CODE_DATA;\r
-\r
-typedef struct {\r
-  UINT64  Signature;\r
-  UINT32  Revision;\r
-  UINT32  HeaderSize;\r
-  UINT32  CRC32;\r
-  UINT32  Reserved;\r
-} EFI_TABLE_HEADER;\r
-\r
-#define EFI_PAGE_SIZE         4096\r
-\r
-\r
-typedef VOID    *EFI_HANDLE;\r
-typedef UINT16  EFI_HII_HANDLE;\r
-typedef UINT16  STRING_REF;\r
-typedef struct {\r
-  INT16     Value;\r
-  INT16     Exponent;\r
-} EFI_EXP_BASE10_DATA;\r
-\r
-//\r
-// Define macros to build data structure signatures from characters.\r
-//\r
-#define EFI_SIGNATURE_16(A, B)        ((A) | (B << 8))\r
-#define EFI_SIGNATURE_32(A, B, C, D)  (EFI_SIGNATURE_16 (A, B) | (EFI_SIGNATURE_16 (C, D) << 16))\r
-#define EFI_SIGNATURE_64(A, B, C, D, E, F, G, H) \\r
-    (EFI_SIGNATURE_32 (A, B, C, D) | ((UINT64) (EFI_SIGNATURE_32 (E, F, G, H)) << 32))\r
-\r
-\r
-#include <Protocol/DevicePath.h>\r
-\r
-#endif\r
diff --git a/Source/C/Include/Common/PiFirmwareFile.h b/Source/C/Include/Common/PiFirmwareFile.h
new file mode 100644 (file)
index 0000000..3da533a
--- /dev/null
@@ -0,0 +1,267 @@
+/** @file\r
+  The firmware file related definitions in PI.\r
+\r
+  Copyright (c) 2006 - 2007, 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
+  @par Revision Reference:\r
+  Version 1.0.\r
+\r
+**/\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
+typedef union {\r
+  struct {\r
+    UINT8   Header;\r
+    UINT8   File;\r
+  } Checksum;\r
+  UINT16    Checksum16;\r
+} EFI_FFS_INTEGRITY_CHECK;\r
+\r
+typedef UINT8 EFI_FV_FILETYPE;\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_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
+#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
+#define FFS_ATTRIB_FIXED              0x04\r
+#define FFS_ATTRIB_DATA_ALIGNMENT     0x38\r
+#define FFS_ATTRIB_CHECKSUM           0x40\r
+//\r
+// FFS_FIXED_CHECKSUM is the default checksum value used when the\r
+// FFS_ATTRIB_CHECKSUM attribute bit is clear\r
+// note this is NOT an architecturally defined value, but is in this file for\r
+// implementation convenience\r
+//\r
+#define FFS_FIXED_CHECKSUM  0x5A\r
+\r
+// \r
+// FFS File State Bits.\r
+// \r
+#define EFI_FILE_HEADER_CONSTRUCTION  0x01\r
+#define EFI_FILE_HEADER_VALID         0x02\r
+#define EFI_FILE_DATA_VALID           0x04\r
+#define EFI_FILE_MARKED_FOR_UPDATE    0x08\r
+#define EFI_FILE_DELETED              0x10\r
+#define EFI_FILE_HEADER_INVALID       0x20\r
+\r
+#define EFI_FILE_ALL_STATE_BITS       (EFI_FILE_HEADER_CONSTRUCTION | \\r
+                                 EFI_FILE_HEADER_VALID | \\r
+                                 EFI_FILE_DATA_VALID | \\r
+                                 EFI_FILE_MARKED_FOR_UPDATE | \\r
+                                 EFI_FILE_DELETED | \\r
+                                 EFI_FILE_HEADER_INVALID \\r
+                                  )\r
+\r
+//\r
+// Each file begins with the header that describe the \r
+// contents and state of the files.\r
+// \r
+typedef struct {\r
+  EFI_GUID                Name;\r
+  EFI_FFS_INTEGRITY_CHECK IntegrityCheck;\r
+  EFI_FV_FILETYPE         Type;\r
+  EFI_FFS_FILE_ATTRIBUTES Attributes;\r
+  UINT8                   Size[3];\r
+  EFI_FFS_FILE_STATE      State;\r
+} EFI_FFS_FILE_HEADER;\r
+\r
+\r
+typedef UINT8 EFI_SECTION_TYPE;\r
+\r
+//\r
+// Pseudo type. It is\r
+// used as a wild card when retrieving sections. The section\r
+// type EFI_SECTION_ALL matches all section types.\r
+//\r
+#define EFI_SECTION_ALL                   0x00\r
+\r
+//\r
+// Encapsulation section Type values\r
+//\r
+#define EFI_SECTION_COMPRESSION           0x01\r
+\r
+#define EFI_SECTION_GUID_DEFINED          0x02\r
+\r
+//\r
+// Leaf section Type values\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
+typedef struct {\r
+  UINT8             Size[3];\r
+  EFI_SECTION_TYPE  Type;\r
+} EFI_COMMON_SECTION_HEADER;\r
+\r
+//\r
+// Leaf section type that contains an \r
+// IA-32 16-bit executable image.\r
+// \r
+typedef EFI_COMMON_SECTION_HEADER EFI_COMPATIBILITY16_SECTION;\r
+\r
+//\r
+// CompressionType of EFI_COMPRESSION_SECTION.\r
+// \r
+#define EFI_NOT_COMPRESSED        0x00\r
+#define EFI_STANDARD_COMPRESSION  0x01\r
+//\r
+// An encapsulation section type in which the \r
+// section data is compressed.\r
+// \r
+typedef struct {\r
+  EFI_COMMON_SECTION_HEADER   CommonHeader;\r
+  UINT32                      UncompressedLength;\r
+  UINT8                       CompressionType;\r
+} EFI_COMPRESSION_SECTION;\r
+\r
+//\r
+// Leaf section which could be used to determine the dispatch order of DXEs.\r
+// \r
+typedef EFI_COMMON_SECTION_HEADER EFI_DXE_DEPEX_SECTION;\r
+\r
+//\r
+// Leaf section witch contains a PI FV.\r
+// \r
+typedef EFI_COMMON_SECTION_HEADER EFI_FIRMWARE_VOLUME_IMAGE_SECTION;\r
+\r
+//\r
+// Leaf section which contains a single GUID.\r
+// \r
+typedef struct {\r
+  EFI_COMMON_SECTION_HEADER   CommonHeader;\r
+  EFI_GUID                    SubTypeGuid;\r
+} EFI_FREEFORM_SUBTYPE_GUID_SECTION;\r
+\r
+//\r
+// Attributes of EFI_GUID_DEFINED_SECTION\r
+// \r
+#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED  0x01\r
+#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID    0x02\r
+//\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_GUID_DEFINED_SECTION;\r
+\r
+//\r
+// Leaf section which contains PE32+ image.\r
+// \r
+typedef EFI_COMMON_SECTION_HEADER EFI_PE32_SECTION;\r
+\r
+//\r
+// Leaf section which contains PIC image.\r
+// \r
+typedef EFI_COMMON_SECTION_HEADER EFI_PIC_SECTION;\r
+\r
+//\r
+// Leaf section which used to determine the dispatch order of PEIMs.\r
+// \r
+typedef EFI_COMMON_SECTION_HEADER EFI_PEI_DEPEX_SECTION;\r
+\r
+//\r
+// Leaf section which constains the position-independent-code image.\r
+// \r
+typedef EFI_COMMON_SECTION_HEADER EFI_TE_SECTION;\r
+\r
+//\r
+// Leaf section which contains an array of zero or more bytes.\r
+// \r
+typedef EFI_COMMON_SECTION_HEADER EFI_RAW_SECTION;\r
+\r
+//\r
+// Leaf section which contains a unicode string that \r
+// is human readable file name.\r
+// \r
+typedef struct {\r
+  EFI_COMMON_SECTION_HEADER   CommonHeader;\r
+\r
+  //\r
+  // Array of unicode string.\r
+  // \r
+  CHAR16                      FileNameString[1];\r
+} EFI_USER_INTERFACE_SECTION;\r
+\r
+\r
+//\r
+// Leaf section which contains a numeric build number and\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_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
+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_TE_SECTION                    *TeSection;\r
+  EFI_PEI_DEPEX_SECTION             *PeimHeaderSection;\r
+  EFI_DXE_DEPEX_SECTION             *DependencySection;\r
+  EFI_VERSION_SECTION               *VersionSection;\r
+  EFI_USER_INTERFACE_SECTION        *UISection;\r
+  EFI_COMPATIBILITY16_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
+\r
diff --git a/Source/C/Include/Common/PiFirmwareFileSystem.h b/Source/C/Include/Common/PiFirmwareFileSystem.h
deleted file mode 100644 (file)
index 5d23045..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/** @file\r
-  This file defines the data structures that comprise the FFS file system.\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:  PiFirmwareFileSystem.h\r
-\r
-  @par Revision Reference:\r
-  These definitions are from PI specification volume 3.\r
-\r
-**/\r
-\r
-#ifndef __EFI_FFS_FILE_SYSTEM_H__\r
-#define __EFI_FFS_FILE_SYSTEM_H__\r
-\r
-//\r
-// FFS File Attributes\r
-//\r
-#define FFS_ATTRIB_DATA_ALIGNMENT   0x38\r
-#define FFS_ATTRIB_CHECKSUM         0x40\r
-#define FFS_ATTRIB_FIXED            0x04\r
-\r
-\r
-//\r
-// FFS_FIXED_CHECKSUM is the default checksum value used when the\r
-// FFS_ATTRIB_CHECKSUM attribute bit is clear\r
-// note this is NOT an architecturally defined value, but is in this file for\r
-// implementation convenience\r
-//\r
-#define FFS_FIXED_CHECKSUM  0x5A\r
-\r
-//\r
-// File state definitions\r
-//\r
-#define EFI_FILE_HEADER_CONSTRUCTION  0x01\r
-#define EFI_FILE_HEADER_VALID         0x02\r
-#define EFI_FILE_DATA_VALID           0x04\r
-#define EFI_FILE_MARKED_FOR_UPDATE    0x08\r
-#define EFI_FILE_DELETED              0x10\r
-#define EFI_FILE_HEADER_INVALID       0x20\r
-\r
-#define EFI_FILE_ALL_STATE_BITS       (EFI_FILE_HEADER_CONSTRUCTION | \\r
-                                 EFI_FILE_HEADER_VALID | \\r
-                                 EFI_FILE_DATA_VALID | \\r
-                                 EFI_FILE_MARKED_FOR_UPDATE | \\r
-                                 EFI_FILE_DELETED | \\r
-                                 EFI_FILE_HEADER_INVALID \\r
-          )\r
-\r
-#define EFI_TEST_FFS_ATTRIBUTES_BIT(FvbAttributes, TestAttributes, Bit) \\r
-    ( \\r
-      (BOOLEAN) ( \\r
-          (FvbAttributes & EFI_FVB2_ERASE_POLARITY) ? (((~TestAttributes) & Bit) == Bit) : ((TestAttributes & Bit) == Bit) \\r
-        ) \\r
-    )\r
-\r
-//\r
-// FFS file integrity check structure\r
-//\r
-typedef union {\r
-  struct {\r
-    UINT8 Header;\r
-    UINT8 File;\r
-  } Checksum;\r
-  UINT16  Checksum16;\r
-} EFI_FFS_INTEGRITY_CHECK;\r
-\r
-//\r
-// FFS file header definition\r
-//\r
-typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;\r
-typedef UINT8 EFI_FFS_FILE_STATE;\r
-\r
-typedef struct {\r
-  EFI_GUID                Name;\r
-  EFI_FFS_INTEGRITY_CHECK IntegrityCheck;\r
-  EFI_FV_FILETYPE         Type;\r
-  EFI_FFS_FILE_ATTRIBUTES Attributes;\r
-  UINT8                   Size[3];\r
-  EFI_FFS_FILE_STATE      State;\r
-} EFI_FFS_FILE_HEADER;\r
-\r
-#endif\r
@@ -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:  PiFirmwareVolume.h\r
-\r
   @par Revision Reference:\r
   Version 1.0.\r
 \r
 #ifndef __PI_FIRMWAREVOLUME_H__\r
 #define __PI_FIRMWAREVOLUME_H__\r
 \r
-typedef UINT32         EFI_FVB_ATTRIBUTES;\r
+//\r
+// EFI_FV_FILE_ATTRIBUTES\r
+//\r
+typedef UINT32  EFI_FV_FILE_ATTRIBUTES;\r
+\r
+//\r
+// Value of EFI_FV_FILE_ATTRIBUTES.\r
+// \r
+#define EFI_FV_FILE_ATTRIB_ALIGNMENT      0x0000001F\r
+#define EFI_FV_FILE_ATTRIB_FIXED          0x00000100\r
+#define EFI_FV_FILE_ATTRIB_MEMORY_MAPPED  0x00000200\r
+\r
+typedef UINT32  EFI_FVB_ATTRIBUTES;\r
 \r
 // \r
 // Attributes bit definitions\r
@@ -74,19 +84,7 @@ typedef UINT32       EFI_FVB_ATTRIBUTES;
 #define EFI_FVB2_ALIGNMENT_1G       0x001E0000\r
 #define EFI_FVB2_ALIGNMENT_2G       0x001F0000\r
 \r
-//\r
-// PI1.0 define Firmware Volume Header Revision to 2\r
-//\r
-#define EFI_FVH_PI_REVISION  0x02\r
-\r
-//\r
-// Firmware Volume Header Signature definition\r
-//\r
-#define EFI_FVH_SIGNATURE EFI_SIGNATURE_32 ('_', 'F', 'V', 'H')\r
 \r
-//\r
-// Firmware Volume Header Block Map Entry definition\r
-//\r
 typedef struct {\r
   UINT32 NumBlocks;\r
   UINT32 Length;\r
@@ -96,19 +94,26 @@ typedef struct {
 // Describes the features and layout of the firmware volume.\r
 //\r
 typedef struct {\r
-  UINT8                   ZeroVector[16];\r
-  EFI_GUID                FileSystemGuid;\r
-  UINT64                  FvLength;\r
-  UINT32                  Signature;\r
-  EFI_FVB_ATTRIBUTES      Attributes;\r
-  UINT16                  HeaderLength;\r
-  UINT16                  Checksum;\r
-  UINT16                  ExtHeaderOffset;\r
-  UINT8                   Reserved[1];\r
-  UINT8                   Revision;\r
-  EFI_FV_BLOCK_MAP_ENTRY  BlockMap[1];\r
+  UINT8                     ZeroVector[16];\r
+  EFI_GUID                  FileSystemGuid;\r
+  UINT64                    FvLength;\r
+  UINT32                    Signature;\r
+  EFI_FVB_ATTRIBUTES        Attributes;\r
+  UINT16                    HeaderLength;\r
+  UINT16                    Checksum;\r
+  UINT16                    ExtHeaderOffset;\r
+  UINT8                     Reserved[1];\r
+  UINT8                     Revision;\r
+  EFI_FV_BLOCK_MAP_ENTRY    BlockMap[1];\r
 } EFI_FIRMWARE_VOLUME_HEADER;\r
 \r
+#define EFI_FVH_SIGNATURE EFI_SIGNATURE_32 ('_', 'F', 'V', 'H')\r
+\r
+///\r
+/// Firmware Volume Header Revision definition\r
+///\r
+#define EFI_FVH_REVISION  0x02\r
+\r
 //\r
 // Extension header pointed by ExtHeaderOffset of volume header.\r
 // \r
index 4954c10..20f3bee 100644 (file)
 \r
 #include <Common/BaseTypes.h>\r
 \r
-typedef UINT64    EFI_LBA;\r
+//\r
+// Basical data type definitions introduced in UEFI.\r
+// \r
+typedef GUID                      EFI_GUID;\r
+typedef RETURN_STATUS             EFI_STATUS;\r
+typedef VOID                      *EFI_HANDLE;\r
+\r
+typedef VOID                      *EFI_EVENT;\r
+\r
+typedef UINTN                     EFI_TPL;\r
+\r
+\r
+typedef UINT64                    EFI_LBA;\r
+\r
+\r
+typedef UINT16                    EFI_HII_HANDLE;\r
+typedef UINT16                    STRING_REF;\r
+\r
+typedef UINT64                    EFI_PHYSICAL_ADDRESS;\r
+typedef UINT64                    EFI_VIRTUAL_ADDRESS;\r
+\r
+//\r
+// EFI Time Abstraction:\r
+//  Year:       2000 - 20XX\r
+//  Month:      1 - 12\r
+//  Day:        1 - 31\r
+//  Hour:       0 - 23\r
+//  Minute:     0 - 59\r
+//  Second:     0 - 59\r
+//  Nanosecond: 0 - 999,999,999\r
+//  TimeZone:   -1440 to 1440 or 2047\r
+//\r
+typedef struct {\r
+  UINT16  Year;\r
+  UINT8   Month;\r
+  UINT8   Day;\r
+  UINT8   Hour;\r
+  UINT8   Minute;\r
+  UINT8   Second;\r
+  UINT8   Pad1;\r
+  UINT32  Nanosecond;\r
+  INT16   TimeZone;\r
+  UINT8   Daylight;\r
+  UINT8   Pad2;\r
+} EFI_TIME;\r
+\r
+\r
+//\r
+// Networking Definitions\r
+//\r
+typedef struct {\r
+  UINT8 Addr[4];\r
+} EFI_IPv4_ADDRESS;\r
+\r
+typedef struct {\r
+  UINT8 Addr[16];\r
+} EFI_IPv6_ADDRESS;\r
 \r
-#define EFIERR(_a)                    ENCODE_ERROR(_a)\r
+typedef struct {\r
+  UINT8 Addr[32];\r
+} EFI_MAC_ADDRESS;\r
 \r
-#define EFI_MAX_BIT                   MAX_BIT\r
-#define EFI_MAX_ADDRESS               MAX_ADDRESS\r
-#define EFI_BREAKPOINT()              CpuBreakpoint ()\r
-#define EFI_DEADLOOP()                CpuDeadLoop ()\r
-#define EFI_ERROR(A)                  RETURN_ERROR(A)\r
+typedef union {\r
+  UINT32            Addr[4];\r
+  EFI_IPv4_ADDRESS  v4;\r
+  EFI_IPv6_ADDRESS  v6;\r
+} EFI_IP_ADDRESS;\r
 \r
-typedef GUID          EFI_GUID;\r
-typedef RETURN_STATUS EFI_STATUS;\r
 \r
+//\r
+// Enumeration of EFI_STATUS.\r
+// \r
 #define EFI_SUCCESS               RETURN_SUCCESS              \r
 #define EFI_LOAD_ERROR            RETURN_LOAD_ERROR           \r
 #define EFI_INVALID_PARAMETER     RETURN_INVALID_PARAMETER    \r
@@ -70,16 +129,45 @@ typedef RETURN_STATUS EFI_STATUS;
 #define EFI_WARN_WRITE_FAILURE    RETURN_WARN_WRITE_FAILURE   \r
 #define EFI_WARN_BUFFER_TOO_SMALL RETURN_WARN_BUFFER_TOO_SMALL\r
 \r
+\r
+#define NULL_HANDLE               ((VOID *) 0)\r
+\r
+//\r
+// Define macro to encode the status code.\r
+// \r
+#define EFIERR(_a)                ENCODE_ERROR(_a)\r
+\r
+#define EFI_ERROR(A)              RETURN_ERROR(A)\r
+\r
+//\r
+// Define macros to build data structure signatures from characters.\r
+//\r
+#define EFI_SIGNATURE_16(A, B)        ((A) | (B << 8))\r
+#define EFI_SIGNATURE_32(A, B, C, D)  (EFI_SIGNATURE_16 (A, B) | (EFI_SIGNATURE_16 (C, D) << 16))\r
+#define EFI_SIGNATURE_64(A, B, C, D, E, F, G, H) \\r
+    (EFI_SIGNATURE_32 (A, B, C, D) | ((UINT64) (EFI_SIGNATURE_32 (E, F, G, H)) << 32))\r
+\r
+\r
+//\r
+//  Returns the byte offset to a field within a structure\r
+//\r
+#define EFI_FIELD_OFFSET(TYPE,Field) ((UINTN)(&(((TYPE *) 0)->Field)))\r
+\r
 //\r
 // The EFI memory allocation functions work in units of EFI_PAGEs that are\r
 // 4K. This should in no way be confused with the page size of the processor.\r
 // An EFI_PAGE is just the quanta of memory in EFI.\r
 //\r
-#define EFI_PAGE_MASK         0xFFF\r
-#define EFI_PAGE_SHIFT        12\r
+#define EFI_PAGE_SIZE             0x1000\r
+#define EFI_PAGE_MASK             0xFFF\r
+#define EFI_PAGE_SHIFT            12\r
 \r
 #define EFI_SIZE_TO_PAGES(a)  (((a) >> EFI_PAGE_SHIFT) + (((a) & EFI_PAGE_MASK) ? 1 : 0))\r
 \r
 #define EFI_PAGES_TO_SIZE(a)   ( (a) << EFI_PAGE_SHIFT)\r
 \r
+\r
+#define EFI_MAX_BIT               MAX_BIT\r
+#define EFI_MAX_ADDRESS           MAX_ADDRESS\r
+\r
 #endif\r
diff --git a/Source/C/Include/Common/Variable.h b/Source/C/Include/Common/Variable.h
deleted file mode 100644 (file)
index bc0d640..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*++\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:\r
-\r
-  EfiVariable.h\r
-  \r
-Abstract:\r
-  \r
-  Header file for EFI Variable Services\r
-\r
---*/\r
-\r
-#ifndef _EFI_VARIABLE_H_\r
-#define _EFI_VARIABLE_H_\r
-\r
-#define VARIABLE_STORE_SIGNATURE  EFI_SIGNATURE_32 ('$', 'V', 'S', 'S')\r
-\r
-#define MAX_VARIABLE_SIZE         1024\r
-\r
-#define VARIABLE_DATA             0x55AA\r
-\r
-//\r
-// Variable Store Header flags\r
-//\r
-#define VARIABLE_STORE_FORMATTED  0x5a\r
-#define VARIABLE_STORE_HEALTHY    0xfe\r
-\r
-//\r
-// Variable Store Status\r
-//\r
-typedef enum {\r
-  EfiRaw,\r
-  EfiValid,\r
-  EfiInvalid,\r
-  EfiUnknown\r
-} VARIABLE_STORE_STATUS;\r
-\r
-//\r
-// Variable State flags\r
-//\r
-#define VAR_IN_DELETED_TRANSITION     0xfe  // Variable is in obsolete transistion\r
-#define VAR_DELETED                   0xfd  // Variable is obsolete\r
-#define VAR_ADDED                     0x7f  // Variable has been completely added\r
-#define IS_VARIABLE_STATE(_c, _Mask)  (BOOLEAN) (((~_c) & (~_Mask)) != 0)\r
-\r
-#pragma pack(1)\r
-\r
-typedef struct {\r
-  UINT32  Signature;\r
-  UINT32  Size;\r
-  UINT8   Format;\r
-  UINT8   State;\r
-  UINT16  Reserved;\r
-  UINT32  Reserved1;\r
-} VARIABLE_STORE_HEADER;\r
-\r
-typedef struct {\r
-  UINT16    StartId;\r
-  UINT8     State;\r
-  UINT8     Reserved;\r
-  UINT32    Attributes;\r
-  UINTN     NameSize;\r
-  UINTN     DataSize;\r
-  EFI_GUID  VendorGuid;\r
-} VARIABLE_HEADER;\r
-\r
-#pragma pack()\r
-\r
-#endif // _EFI_VARIABLE_H_\r
diff --git a/Source/C/Include/Common/WorkingBlockHeader.h b/Source/C/Include/Common/WorkingBlockHeader.h
deleted file mode 100644 (file)
index 235b740..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*++\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:\r
-\r
-  EfiWorkingBlockHeader.h\r
-\r
-Abstract:\r
-\r
-  Defines data structure that is the headers found at the runtime \r
-  updatable firmware volumes, such as the FileSystemGuid of the \r
-  working block, the header structure of the variable block, FTW\r
-  working block, or event log block.\r
-\r
---*/\r
-\r
-#ifndef _EFI_WORKING_BLOCK_HEADER_H_\r
-#define _EFI_WORKING_BLOCK_HEADER_H_\r
-\r
-//\r
-// EFI Fault tolerant working block header\r
-// The header is immediately followed by the write queue.\r
-//\r
-typedef struct {\r
-  EFI_GUID  Signature;\r
-  UINT32    Crc;\r
-  UINT32    WorkingBlockValid : 1;\r
-  UINT32    WorkingBlockInvalid : 1;\r
-#define WORKING_BLOCK_VALID   0x1\r
-#define WORKING_BLOCK_INVALID 0x2\r
-  UINT32    Reserved : 6;\r
-  UINT8     Reserved3[3];\r
-  UINTN     WriteQueueSize;\r
-  //\r
-  // UINT8                WriteQueue[WriteQueueSize];\r
-  //\r
-} EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER;\r
-\r
-#endif\r
diff --git a/Source/C/Include/Guid/AcpiTableStorage.h b/Source/C/Include/Guid/AcpiTableStorage.h
deleted file mode 100644 (file)
index 80b1154..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file\r
-  The ACPI table storage file is fully FFS compliant. \r
-  The file is a number of sections of type EFI_SECTION_RAW.\r
-  This GUID is used to identify the file as an ACPI table storage file.\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:  AcpiTableStorage.h\r
-\r
-  @par Revision Reference:\r
-  GUID defined in ACPI Table Storage Spec Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _ACPI_TABLE_STORAGE_H_\r
-#define _ACPI_TABLE_STORAGE_H_\r
-\r
-#define EFI_ACPI_TABLE_STORAGE_GUID \\r
-  { 0x7e374e25, 0x8e01, 0x4fee, {0x87, 0xf2, 0x39, 0xc, 0x23, 0xc6, 0x6, 0xcd } }\r
-\r
-extern EFI_GUID gEfiAcpiTableStorageGuid;\r
-\r
-#endif\r
diff --git a/Source/C/Include/Guid/Apriori.h b/Source/C/Include/Guid/Apriori.h
deleted file mode 100644 (file)
index ba92560..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/** @file\r
-  GUID used as an FV filename for A Priori file. The A Priori file contains a\r
-  list of FV filenames that the DXE dispatcher will schedule reguardless of\r
-  the dependency grammer.\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:  Apriori.h\r
-\r
-  @par Revision Reference:\r
-  GUID defined in DXE CIS spec version 0.91B\r
-\r
-**/\r
-\r
-#ifndef __APRIORI_GUID_H__\r
-#define __APRIORI_GUID_H__\r
-\r
-#define EFI_APRIORI_GUID \\r
-  { \\r
-    0xfc510ee7, 0xffdc, 0x11d4, {0xbd, 0x41, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
-  }\r
-\r
-extern EFI_GUID gAprioriGuid;\r
-\r
-#endif\r
diff --git a/Source/C/Include/Guid/Capsule.h b/Source/C/Include/Guid/Capsule.h
deleted file mode 100644 (file)
index 7864b92..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/** @file\r
-  GUIDs used for EFI Capsule\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:  Capsule.h\r
-\r
-  @par Revision Reference:\r
-  GUIDs defined in Capsule Spec Version 0.9\r
-\r
-**/\r
-\r
-#ifndef __CAPSULE_GUID_H__\r
-#define __CAPSULE_GUID_H__\r
-\r
-//\r
-// This is the GUID of the capsule header of the image on disk.\r
-//\r
-#define EFI_CAPSULE_GUID \\r
-  { \\r
-    0x3B6686BD, 0x0D76, 0x4030, {0xB7, 0x0E, 0xB5, 0x51, 0x9E, 0x2F, 0xC5, 0xA0 } \\r
-  }\r
-\r
-//\r
-// This is the GUID of the configuration results file created by the capsule\r
-// application.\r
-//\r
-#define EFI_CONFIG_FILE_NAME_GUID \\r
-  { \\r
-    0x98B8D59B, 0xE8BA, 0x48EE, {0x98, 0xDD, 0xC2, 0x95, 0x39, 0x2F, 0x1E, 0xDB } \\r
-  }\r
-\r
-extern EFI_GUID gEfiCapsuleGuid;\r
-extern EFI_GUID gEfiConfigFileNameGuid;\r
-\r
-#endif\r
index 6fe4a6b..d198ad9 100644 (file)
@@ -17,8 +17,8 @@
 \r
 **/\r
 \r
-#ifndef __FIRMWARE_FILE_SYSTEM_GUID_H__\r
-#define __FIRMWARE_FILE_SYSTEM_GUID_H__\r
+#ifndef __FIRMWARE_FILE_SYSTEM2_GUID_H__\r
+#define __FIRMWARE_FILE_SYSTEM2_GUID_H__\r
 \r
 //\r
 // GUIDs defined by the PI specification.\r
diff --git a/Source/C/Include/IndustryStandard/PeImage.h b/Source/C/Include/IndustryStandard/PeImage.h
new file mode 100644 (file)
index 0000000..c7fb8d4
--- /dev/null
@@ -0,0 +1,754 @@
+/** @file\r
+  EFI image format for PE32+. Please note some data structures are different\r
+  for IA-32 and Itanium-based images, look for UINTN and the #ifdef EFI_IA64\r
+\r
+  @bug Fix text - doc as defined in MSFT EFI specification.\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:  PeImage.h\r
+\r
+**/\r
+\r
+#ifndef __PE_IMAGE_H__\r
+#define __PE_IMAGE_H__\r
+\r
+//\r
+// PE32+ Subsystem type for EFI images\r
+//\r
+#define EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION         10\r
+#define EFI_IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11\r
+#define EFI_IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER      12\r
+#define EFI_IMAGE_SUBSYSTEM_SAL_RUNTIME_DRIVER      13\r
+\r
+//\r
+// BugBug: Need to get a real answer for this problem. This is not in the\r
+//         PE specification.\r
+//\r
+//         A SAL runtime driver does not get fixed up when a transition to\r
+//         virtual mode is made. In all other cases it should be treated\r
+//         like a EFI_IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER image\r
+//\r
+#define EFI_IMAGE_SUBSYSTEM_SAL_RUNTIME_DRIVER  13\r
+\r
+//\r
+// PE32+ Machine type for EFI images\r
+//\r
+#define IMAGE_FILE_MACHINE_I386     0x014c\r
+#define IMAGE_FILE_MACHINE_IA64     0x0200\r
+#define IMAGE_FILE_MACHINE_EBC      0x0EBC\r
+#define IMAGE_FILE_MACHINE_X64      0x8664\r
+//\r
+// Support old names for backward compatible\r
+//\r
+#define EFI_IMAGE_MACHINE_IA32      IMAGE_FILE_MACHINE_I386 \r
+#define EFI_IMAGE_MACHINE_IA64      IMAGE_FILE_MACHINE_IA64  \r
+#define EFI_IMAGE_MACHINE_IPF       IMAGE_FILE_MACHINE_IA64  \r
+#define EFI_IMAGE_MACHINE_EBC       IMAGE_FILE_MACHINE_EBC  \r
+#define EFI_IMAGE_MACHINE_X64       IMAGE_FILE_MACHINE_X64\r
+\r
+#define EFI_IMAGE_DOS_SIGNATURE     0x5A4D      // MZ\r
+#define EFI_IMAGE_OS2_SIGNATURE     0x454E      // NE\r
+#define EFI_IMAGE_OS2_SIGNATURE_LE  0x454C      // LE\r
+#define EFI_IMAGE_NT_SIGNATURE      0x00004550  // PE00\r
+#define EFI_IMAGE_EDOS_SIGNATURE    0x44454550  // PEED\r
+\r
+///\r
+/// PE images can start with an optional DOS header, so if an image is run\r
+///  under DOS it can print an error message.\r
+///\r
+typedef struct {\r
+  UINT16  e_magic;    // Magic number\r
+  UINT16  e_cblp;     // Bytes on last page of file\r
+  UINT16  e_cp;       // Pages in file\r
+  UINT16  e_crlc;     // Relocations\r
+  UINT16  e_cparhdr;  // Size of header in paragraphs\r
+  UINT16  e_minalloc; // Minimum extra paragraphs needed\r
+  UINT16  e_maxalloc; // Maximum extra paragraphs needed\r
+  UINT16  e_ss;       // Initial (relative) SS value\r
+  UINT16  e_sp;       // Initial SP value\r
+  UINT16  e_csum;     // Checksum\r
+  UINT16  e_ip;       // Initial IP value\r
+  UINT16  e_cs;       // Initial (relative) CS value\r
+  UINT16  e_lfarlc;   // File address of relocation table\r
+  UINT16  e_ovno;     // Overlay number\r
+  UINT16  e_res[4];   // Reserved words\r
+  UINT16  e_oemid;    // OEM identifier (for e_oeminfo)\r
+  UINT16  e_oeminfo;  // OEM information; e_oemid specific\r
+  UINT16  e_res2[10]; // Reserved words\r
+  UINT32  e_lfanew;   // File address of new exe header\r
+} EFI_IMAGE_DOS_HEADER;\r
+\r
+///\r
+/// File header format.\r
+///\r
+typedef struct {\r
+  UINT16  Machine;\r
+  UINT16  NumberOfSections;\r
+  UINT32  TimeDateStamp;\r
+  UINT32  PointerToSymbolTable;\r
+  UINT32  NumberOfSymbols;\r
+  UINT16  SizeOfOptionalHeader;\r
+  UINT16  Characteristics;\r
+} EFI_IMAGE_FILE_HEADER;\r
+\r
+#define EFI_IMAGE_SIZEOF_FILE_HEADER        20\r
+\r
+#define EFI_IMAGE_FILE_RELOCS_STRIPPED      0x0001  // Relocation info stripped from file.\r
+#define EFI_IMAGE_FILE_EXECUTABLE_IMAGE     0x0002  // File is executable  (i.e. no unresolved externel references).\r
+#define EFI_IMAGE_FILE_LINE_NUMS_STRIPPED   0x0004  // Line nunbers stripped from file.\r
+#define EFI_IMAGE_FILE_LOCAL_SYMS_STRIPPED  0x0008  // Local symbols stripped from file.\r
+#define EFI_IMAGE_FILE_BYTES_REVERSED_LO    0x0080  // Bytes of machine word are reversed.\r
+#define EFI_IMAGE_FILE_32BIT_MACHINE        0x0100  // 32 bit word machine.\r
+#define EFI_IMAGE_FILE_DEBUG_STRIPPED       0x0200  // Debugging info stripped from file in .DBG file\r
+#define EFI_IMAGE_FILE_SYSTEM               0x1000  // System File.\r
+#define EFI_IMAGE_FILE_DLL                  0x2000  // File is a DLL.\r
+#define EFI_IMAGE_FILE_BYTES_REVERSED_HI    0x8000  // Bytes of machine word are reversed.\r
+#define EFI_IMAGE_FILE_MACHINE_UNKNOWN      0\r
+#define EFI_IMAGE_FILE_MACHINE_I386         0x14c   // Intel 386.\r
+#define EFI_IMAGE_FILE_MACHINE_R3000        0x162   // MIPS* little-endian, 0540 big-endian\r
+#define EFI_IMAGE_FILE_MACHINE_R4000        0x166   // MIPS* little-endian\r
+#define EFI_IMAGE_FILE_MACHINE_ALPHA        0x184   // Alpha_AXP*\r
+#define EFI_IMAGE_FILE_MACHINE_POWERPC      0x1F0   // IBM* PowerPC Little-Endian\r
+#define EFI_IMAGE_FILE_MACHINE_TAHOE        0x7cc   // Intel EM machine\r
+//\r
+// * Other names and brands may be claimed as the property of others.\r
+//\r
+\r
+///\r
+/// Directory format.\r
+///\r
+typedef struct {\r
+  UINT32  VirtualAddress;\r
+  UINT32  Size;\r
+} EFI_IMAGE_DATA_DIRECTORY;\r
+\r
+#define EFI_IMAGE_NUMBER_OF_DIRECTORY_ENTRIES 16\r
+\r
+typedef struct {\r
+  UINT16  Magic;\r
+  UINT8   MajorLinkerVersion;\r
+  UINT8   MinorLinkerVersion;\r
+  UINT32  SizeOfCode;\r
+  UINT32  SizeOfInitializedData;\r
+  UINT32  SizeOfUninitializedData;\r
+  UINT32  AddressOfEntryPoint;\r
+  UINT32  BaseOfCode;\r
+  UINT32  BaseOfData;\r
+  UINT32  BaseOfBss;\r
+  UINT32  GprMask;\r
+  UINT32  CprMask[4];\r
+  UINT32  GpValue;\r
+} EFI_IMAGE_ROM_OPTIONAL_HEADER;\r
+\r
+#define EFI_IMAGE_ROM_OPTIONAL_HDR_MAGIC      0x107\r
+#define EFI_IMAGE_SIZEOF_ROM_OPTIONAL_HEADER  sizeof (EFI_IMAGE_ROM_OPTIONAL_HEADER)\r
+\r
+typedef struct {\r
+  EFI_IMAGE_FILE_HEADER         FileHeader;\r
+  EFI_IMAGE_ROM_OPTIONAL_HEADER OptionalHeader;\r
+} EFI_IMAGE_ROM_HEADERS;\r
+\r
+///\r
+/// @attention\r
+/// EFI_IMAGE_OPTIONAL_HEADER32 and EFI_IMAGE_OPTIONAL_HEADER64\r
+/// are for use ONLY by tools.  All proper EFI code MUST use\r
+/// EFI_IMAGE_OPTIONAL_HEADER ONLY!!!\r
+///\r
+#define EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b\r
+\r
+typedef struct {\r
+  //\r
+  // Standard fields.\r
+  //\r
+  UINT16                    Magic;\r
+  UINT8                     MajorLinkerVersion;\r
+  UINT8                     MinorLinkerVersion;\r
+  UINT32                    SizeOfCode;\r
+  UINT32                    SizeOfInitializedData;\r
+  UINT32                    SizeOfUninitializedData;\r
+  UINT32                    AddressOfEntryPoint;\r
+  UINT32                    BaseOfCode;\r
+  UINT32                    BaseOfData;\r
+  //\r
+  // NT additional fields.\r
+  //\r
+  UINT32                    ImageBase;\r
+  UINT32                    SectionAlignment;\r
+  UINT32                    FileAlignment;\r
+  UINT16                    MajorOperatingSystemVersion;\r
+  UINT16                    MinorOperatingSystemVersion;\r
+  UINT16                    MajorImageVersion;\r
+  UINT16                    MinorImageVersion;\r
+  UINT16                    MajorSubsystemVersion;\r
+  UINT16                    MinorSubsystemVersion;\r
+  UINT32                    Win32VersionValue;\r
+  UINT32                    SizeOfImage;\r
+  UINT32                    SizeOfHeaders;\r
+  UINT32                    CheckSum;\r
+  UINT16                    Subsystem;\r
+  UINT16                    DllCharacteristics;\r
+  UINT32                    SizeOfStackReserve;\r
+  UINT32                    SizeOfStackCommit;\r
+  UINT32                    SizeOfHeapReserve;\r
+  UINT32                    SizeOfHeapCommit;\r
+  UINT32                    LoaderFlags;\r
+  UINT32                    NumberOfRvaAndSizes;\r
+  EFI_IMAGE_DATA_DIRECTORY  DataDirectory[EFI_IMAGE_NUMBER_OF_DIRECTORY_ENTRIES];\r
+} EFI_IMAGE_OPTIONAL_HEADER32;\r
+\r
+///\r
+/// @attention\r
+/// EFI_IMAGE_OPTIONAL_HEADER32 and EFI_IMAGE_OPTIONAL_HEADER64\r
+/// are for use ONLY by tools.  All proper EFI code MUST use\r
+/// EFI_IMAGE_OPTIONAL_HEADER ONLY!!!\r
+///\r
+#define EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b\r
+\r
+typedef struct {\r
+  //\r
+  // Standard fields.\r
+  //\r
+  UINT16                    Magic;\r
+  UINT8                     MajorLinkerVersion;\r
+  UINT8                     MinorLinkerVersion;\r
+  UINT32                    SizeOfCode;\r
+  UINT32                    SizeOfInitializedData;\r
+  UINT32                    SizeOfUninitializedData;\r
+  UINT32                    AddressOfEntryPoint;\r
+  UINT32                    BaseOfCode;\r
+  //\r
+  // NT additional fields.\r
+  //\r
+  UINT64                    ImageBase;\r
+  UINT32                    SectionAlignment;\r
+  UINT32                    FileAlignment;\r
+  UINT16                    MajorOperatingSystemVersion;\r
+  UINT16                    MinorOperatingSystemVersion;\r
+  UINT16                    MajorImageVersion;\r
+  UINT16                    MinorImageVersion;\r
+  UINT16                    MajorSubsystemVersion;\r
+  UINT16                    MinorSubsystemVersion;\r
+  UINT32                    Win32VersionValue;\r
+  UINT32                    SizeOfImage;\r
+  UINT32                    SizeOfHeaders;\r
+  UINT32                    CheckSum;\r
+  UINT16                    Subsystem;\r
+  UINT16                    DllCharacteristics;\r
+  UINT64                    SizeOfStackReserve;\r
+  UINT64                    SizeOfStackCommit;\r
+  UINT64                    SizeOfHeapReserve;\r
+  UINT64                    SizeOfHeapCommit;\r
+  UINT32                    LoaderFlags;\r
+  UINT32                    NumberOfRvaAndSizes;\r
+  EFI_IMAGE_DATA_DIRECTORY  DataDirectory[EFI_IMAGE_NUMBER_OF_DIRECTORY_ENTRIES];\r
+} EFI_IMAGE_OPTIONAL_HEADER64;\r
+\r
+///\r
+/// @attention\r
+/// EFI_IMAGE_NT_HEADERS32 and EFI_IMAGE_HEADERS64 are for use ONLY\r
+/// by tools.  All proper EFI code MUST use EFI_IMAGE_NT_HEADERS ONLY!!!\r
+///\r
+typedef struct {\r
+  UINT32                      Signature;\r
+  EFI_IMAGE_FILE_HEADER       FileHeader;\r
+  EFI_IMAGE_OPTIONAL_HEADER32 OptionalHeader;\r
+} EFI_IMAGE_NT_HEADERS32;\r
+\r
+#define EFI_IMAGE_SIZEOF_NT_OPTIONAL32_HEADER sizeof (EFI_IMAGE_NT_HEADERS32)\r
+\r
+typedef struct {\r
+  UINT32                      Signature;\r
+  EFI_IMAGE_FILE_HEADER       FileHeader;\r
+  EFI_IMAGE_OPTIONAL_HEADER64 OptionalHeader;\r
+} EFI_IMAGE_NT_HEADERS64;\r
+\r
+#define EFI_IMAGE_SIZEOF_NT_OPTIONAL64_HEADER sizeof (EFI_IMAGE_NT_HEADERS64)\r
+\r
+//\r
+// Processor specific definition of EFI_IMAGE_OPTIONAL_HEADER so the\r
+// type name EFI_IMAGE_OPTIONAL_HEADER is appropriate to the build.  Same for\r
+// EFI_IMAGE_NT_HEADERS.  These definitions MUST be used by ALL EFI code.\r
+//\r
+#if   defined (MDE_CPU_IA32)\r
+\r
+typedef EFI_IMAGE_OPTIONAL_HEADER32     EFI_IMAGE_OPTIONAL_HEADER;\r
+typedef EFI_IMAGE_NT_HEADERS32          EFI_IMAGE_NT_HEADERS;\r
+\r
+#define EFI_IMAGE_NT_OPTIONAL_HDR_MAGIC EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC\r
+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \\r
+  (((Machine) == EFI_IMAGE_MACHINE_IA32) || ((Machine) == EFI_IMAGE_MACHINE_EBC))\r
+\r
+#elif defined (MDE_CPU_IPF)\r
+\r
+typedef EFI_IMAGE_OPTIONAL_HEADER64     EFI_IMAGE_OPTIONAL_HEADER;\r
+typedef EFI_IMAGE_NT_HEADERS64          EFI_IMAGE_NT_HEADERS;\r
+\r
+#define EFI_IMAGE_NT_OPTIONAL_HDR_MAGIC EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC\r
+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \\r
+  (((Machine) == EFI_IMAGE_MACHINE_IPF) || ((Machine) == EFI_IMAGE_MACHINE_EBC))\r
+\r
+#elif defined (MDE_CPU_X64)\r
+\r
+typedef EFI_IMAGE_OPTIONAL_HEADER64     EFI_IMAGE_OPTIONAL_HEADER;\r
+typedef EFI_IMAGE_NT_HEADERS64          EFI_IMAGE_NT_HEADERS;\r
+\r
+#define EFI_IMAGE_NT_OPTIONAL_HDR_MAGIC EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC\r
+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \\r
+  (((Machine) == EFI_IMAGE_MACHINE_X64) || ((Machine) == EFI_IMAGE_MACHINE_EBC))\r
+\r
+#elif defined (MDE_CPU_EBC)\r
+\r
+//\r
+// This is just to make sure you can cross compile with the EBC compiiler.\r
+// It does not make sense to have a PE loader coded in EBC. You need to \r
+// understand the basic \r
+//\r
+typedef EFI_IMAGE_OPTIONAL_HEADER64     EFI_IMAGE_OPTIONAL_HEADER;\r
+typedef EFI_IMAGE_NT_HEADERS64          EFI_IMAGE_NT_HEADERS;\r
+\r
+#define EFI_IMAGE_NT_OPTIONAL_HDR_MAGIC EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC\r
+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_EBC)\r
+\r
+#else\r
+#error Unknown Processor Type\r
+#endif\r
+\r
+\r
+#define EFI_IMAGE_FIRST_SECTION(ntheader) \\r
+    ( \\r
+      (EFI_IMAGE_SECTION_HEADER *) \\r
+        ( \\r
+          (UINT32) ntheader + \\r
+          FIELD_OFFSET (EFI_IMAGE_NT_HEADERS, OptionalHeader) + \\r
+          ((EFI_IMAGE_NT_HEADERS *) (ntheader))->FileHeader.SizeOfOptionalHeader \\r
+        ) \\r
+    )\r
+\r
+//\r
+// Subsystem Values\r
+//\r
+#define EFI_IMAGE_SUBSYSTEM_UNKNOWN     0\r
+#define EFI_IMAGE_SUBSYSTEM_NATIVE      1\r
+#define EFI_IMAGE_SUBSYSTEM_WINDOWS_GUI 2\r
+#define EFI_IMAGE_SUBSYSTEM_WINDOWS_CUI 3.\r
+#define EFI_IMAGE_SUBSYSTEM_OS2_CUI     5\r
+#define EFI_IMAGE_SUBSYSTEM_POSIX_CUI   7\r
+\r
+//\r
+// Directory Entries\r
+//\r
+#define EFI_IMAGE_DIRECTORY_ENTRY_EXPORT      0\r
+#define EFI_IMAGE_DIRECTORY_ENTRY_IMPORT      1\r
+#define EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE    2\r
+#define EFI_IMAGE_DIRECTORY_ENTRY_EXCEPTION   3\r
+#define EFI_IMAGE_DIRECTORY_ENTRY_SECURITY    4\r
+#define EFI_IMAGE_DIRECTORY_ENTRY_BASERELOC   5\r
+#define EFI_IMAGE_DIRECTORY_ENTRY_DEBUG       6\r
+#define EFI_IMAGE_DIRECTORY_ENTRY_COPYRIGHT   7\r
+#define EFI_IMAGE_DIRECTORY_ENTRY_GLOBALPTR   8\r
+#define EFI_IMAGE_DIRECTORY_ENTRY_TLS         9\r
+#define EFI_IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10\r
+\r
+//\r
+// Section header format.\r
+//\r
+#define EFI_IMAGE_SIZEOF_SHORT_NAME 8\r
+\r
+typedef struct {\r
+  UINT8 Name[EFI_IMAGE_SIZEOF_SHORT_NAME];\r
+  union {\r
+    UINT32  PhysicalAddress;\r
+    UINT32  VirtualSize;\r
+  } Misc;\r
+  UINT32  VirtualAddress;\r
+  UINT32  SizeOfRawData;\r
+  UINT32  PointerToRawData;\r
+  UINT32  PointerToRelocations;\r
+  UINT32  PointerToLinenumbers;\r
+  UINT16  NumberOfRelocations;\r
+  UINT16  NumberOfLinenumbers;\r
+  UINT32  Characteristics;\r
+} EFI_IMAGE_SECTION_HEADER;\r
+\r
+#define EFI_IMAGE_SIZEOF_SECTION_HEADER       40\r
+\r
+#define EFI_IMAGE_SCN_TYPE_NO_PAD             0x00000008  // Reserved.\r
+#define EFI_IMAGE_SCN_CNT_CODE                0x00000020\r
+#define EFI_IMAGE_SCN_CNT_INITIALIZED_DATA    0x00000040\r
+#define EFI_IMAGE_SCN_CNT_UNINITIALIZED_DATA  0x00000080\r
+\r
+#define EFI_IMAGE_SCN_LNK_OTHER               0x00000100  // Reserved.\r
+#define EFI_IMAGE_SCN_LNK_INFO                0x00000200  // Section contains comments or some other type of information.\r
+#define EFI_IMAGE_SCN_LNK_REMOVE              0x00000800  // Section contents will not become part of image.\r
+#define EFI_IMAGE_SCN_LNK_COMDAT              0x00001000\r
+\r
+#define EFI_IMAGE_SCN_ALIGN_1BYTES            0x00100000\r
+#define EFI_IMAGE_SCN_ALIGN_2BYTES            0x00200000\r
+#define EFI_IMAGE_SCN_ALIGN_4BYTES            0x00300000\r
+#define EFI_IMAGE_SCN_ALIGN_8BYTES            0x00400000\r
+#define EFI_IMAGE_SCN_ALIGN_16BYTES           0x00500000\r
+#define EFI_IMAGE_SCN_ALIGN_32BYTES           0x00600000\r
+#define EFI_IMAGE_SCN_ALIGN_64BYTES           0x00700000\r
+\r
+#define EFI_IMAGE_SCN_MEM_DISCARDABLE         0x02000000\r
+#define EFI_IMAGE_SCN_MEM_NOT_CACHED          0x04000000\r
+#define EFI_IMAGE_SCN_MEM_NOT_PAGED           0x08000000\r
+#define EFI_IMAGE_SCN_MEM_SHARED              0x10000000\r
+#define EFI_IMAGE_SCN_MEM_EXECUTE             0x20000000\r
+#define EFI_IMAGE_SCN_MEM_READ                0x40000000\r
+#define EFI_IMAGE_SCN_MEM_WRITE               0x80000000\r
+\r
+///\r
+/// Symbol format.\r
+///\r
+#define EFI_IMAGE_SIZEOF_SYMBOL 18\r
+\r
+//\r
+// Section values.\r
+//\r
+// Symbols have a section number of the section in which they are\r
+// defined. Otherwise, section numbers have the following meanings:\r
+//\r
+#define EFI_IMAGE_SYM_UNDEFINED (UINT16) 0  // Symbol is undefined or is common.\r
+#define EFI_IMAGE_SYM_ABSOLUTE  (UINT16) -1 // Symbol is an absolute value.\r
+#define EFI_IMAGE_SYM_DEBUG     (UINT16) -2 // Symbol is a special debug item.\r
+//\r
+// Type (fundamental) values.\r
+//\r
+#define EFI_IMAGE_SYM_TYPE_NULL   0   // no type.\r
+#define EFI_IMAGE_SYM_TYPE_VOID   1   //\r
+#define EFI_IMAGE_SYM_TYPE_CHAR   2   // type character.\r
+#define EFI_IMAGE_SYM_TYPE_SHORT  3   // type short integer.\r
+#define EFI_IMAGE_SYM_TYPE_INT    4\r
+#define EFI_IMAGE_SYM_TYPE_LONG   5\r
+#define EFI_IMAGE_SYM_TYPE_FLOAT  6\r
+#define EFI_IMAGE_SYM_TYPE_DOUBLE 7\r
+#define EFI_IMAGE_SYM_TYPE_STRUCT 8\r
+#define EFI_IMAGE_SYM_TYPE_UNION  9\r
+#define EFI_IMAGE_SYM_TYPE_ENUM   10  // enumeration.\r
+#define EFI_IMAGE_SYM_TYPE_MOE    11  // member of enumeration.\r
+#define EFI_IMAGE_SYM_TYPE_BYTE   12\r
+#define EFI_IMAGE_SYM_TYPE_WORD   13\r
+#define EFI_IMAGE_SYM_TYPE_UINT   14\r
+#define EFI_IMAGE_SYM_TYPE_DWORD  15\r
+\r
+//\r
+// Type (derived) values.\r
+//\r
+#define EFI_IMAGE_SYM_DTYPE_NULL      0 // no derived type.\r
+#define EFI_IMAGE_SYM_DTYPE_POINTER   1\r
+#define EFI_IMAGE_SYM_DTYPE_FUNCTION  2\r
+#define EFI_IMAGE_SYM_DTYPE_ARRAY     3\r
+\r
+//\r
+// Storage classes.\r
+//\r
+#define EFI_IMAGE_SYM_CLASS_END_OF_FUNCTION   (UINT8) -1\r
+#define EFI_IMAGE_SYM_CLASS_NULL              0\r
+#define EFI_IMAGE_SYM_CLASS_AUTOMATIC         1\r
+#define EFI_IMAGE_SYM_CLASS_EXTERNAL          2\r
+#define EFI_IMAGE_SYM_CLASS_STATIC            3\r
+#define EFI_IMAGE_SYM_CLASS_REGISTER          4\r
+#define EFI_IMAGE_SYM_CLASS_EXTERNAL_DEF      5\r
+#define EFI_IMAGE_SYM_CLASS_LABEL             6\r
+#define EFI_IMAGE_SYM_CLASS_UNDEFINED_LABEL   7\r
+#define EFI_IMAGE_SYM_CLASS_MEMBER_OF_STRUCT  8\r
+#define EFI_IMAGE_SYM_CLASS_ARGUMENT          9\r
+#define EFI_IMAGE_SYM_CLASS_STRUCT_TAG        10\r
+#define EFI_IMAGE_SYM_CLASS_MEMBER_OF_UNION   11\r
+#define EFI_IMAGE_SYM_CLASS_UNION_TAG         12\r
+#define EFI_IMAGE_SYM_CLASS_TYPE_DEFINITION   13\r
+#define EFI_IMAGE_SYM_CLASS_UNDEFINED_STATIC  14\r
+#define EFI_IMAGE_SYM_CLASS_ENUM_TAG          15\r
+#define EFI_IMAGE_SYM_CLASS_MEMBER_OF_ENUM    16\r
+#define EFI_IMAGE_SYM_CLASS_REGISTER_PARAM    17\r
+#define EFI_IMAGE_SYM_CLASS_BIT_FIELD         18\r
+#define EFI_IMAGE_SYM_CLASS_BLOCK             100\r
+#define EFI_IMAGE_SYM_CLASS_FUNCTION          101\r
+#define EFI_IMAGE_SYM_CLASS_END_OF_STRUCT     102\r
+#define EFI_IMAGE_SYM_CLASS_FILE              103\r
+#define EFI_IMAGE_SYM_CLASS_SECTION           104\r
+#define EFI_IMAGE_SYM_CLASS_WEAK_EXTERNAL     105\r
+\r
+//\r
+// type packing constants\r
+//\r
+#define EFI_IMAGE_N_BTMASK  017\r
+#define EFI_IMAGE_N_TMASK   060\r
+#define EFI_IMAGE_N_TMASK1  0300\r
+#define EFI_IMAGE_N_TMASK2  0360\r
+#define EFI_IMAGE_N_BTSHFT  4\r
+#define EFI_IMAGE_N_TSHIFT  2\r
+\r
+//\r
+// Communal selection types.\r
+//\r
+#define EFI_IMAGE_COMDAT_SELECT_NODUPLICATES    1\r
+#define EFI_IMAGE_COMDAT_SELECT_ANY             2\r
+#define EFI_IMAGE_COMDAT_SELECT_SAME_SIZE       3\r
+#define EFI_IMAGE_COMDAT_SELECT_EXACT_MATCH     4\r
+#define EFI_IMAGE_COMDAT_SELECT_ASSOCIATIVE     5\r
+\r
+#define EFI_IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY  1\r
+#define EFI_IMAGE_WEAK_EXTERN_SEARCH_LIBRARY    2\r
+#define EFI_IMAGE_WEAK_EXTERN_SEARCH_ALIAS      3\r
+\r
+///\r
+/// Relocation format.\r
+///\r
+typedef struct {\r
+  UINT32  VirtualAddress;\r
+  UINT32  SymbolTableIndex;\r
+  UINT16  Type;\r
+} EFI_IMAGE_RELOCATION;\r
+\r
+#define EFI_IMAGE_SIZEOF_RELOCATION 10\r
+\r
+//\r
+// I386 relocation types.\r
+//\r
+#define EFI_IMAGE_REL_I386_ABSOLUTE 0   // Reference is absolute, no relocation is necessary\r
+#define EFI_IMAGE_REL_I386_DIR16    01  // Direct 16-bit reference to the symbols virtual address\r
+#define EFI_IMAGE_REL_I386_REL16    02  // PC-relative 16-bit reference to the symbols virtual address\r
+#define EFI_IMAGE_REL_I386_DIR32    06  // Direct 32-bit reference to the symbols virtual address\r
+#define EFI_IMAGE_REL_I386_DIR32NB  07  // Direct 32-bit reference to the symbols virtual address, base not included\r
+#define EFI_IMAGE_REL_I386_SEG12    09  // Direct 16-bit reference to the segment-selector bits of a 32-bit virtual address\r
+#define EFI_IMAGE_REL_I386_SECTION  010\r
+#define EFI_IMAGE_REL_I386_SECREL   011\r
+#define EFI_IMAGE_REL_I386_REL32    020 // PC-relative 32-bit reference to the symbols virtual address\r
+\r
+//\r
+// x64 processor relocation types.\r
+//\r
+#define IMAGE_REL_AMD64_ABSOLUTE       0x0000\r
+#define IMAGE_REL_AMD64_ADDR64   0x0001\r
+#define IMAGE_REL_AMD64_ADDR32   0x0002\r
+#define IMAGE_REL_AMD64_ADDR32NB       0x0003\r
+#define IMAGE_REL_AMD64_REL32      0x0004\r
+#define IMAGE_REL_AMD64_REL32_1          0x0005\r
+#define IMAGE_REL_AMD64_REL32_2          0x0006\r
+#define IMAGE_REL_AMD64_REL32_3          0x0007\r
+#define IMAGE_REL_AMD64_REL32_4          0x0008\r
+#define IMAGE_REL_AMD64_REL32_5          0x0009\r
+#define IMAGE_REL_AMD64_SECTION          0x000A\r
+#define IMAGE_REL_AMD64_SECREL   0x000B\r
+#define IMAGE_REL_AMD64_SECREL7          0x000C\r
+#define IMAGE_REL_AMD64_TOKEN      0x000D\r
+#define IMAGE_REL_AMD64_SREL32   0x000E\r
+#define IMAGE_REL_AMD64_PAIR       0x000F\r
+#define IMAGE_REL_AMD64_SSPAN32          0x0010\r
+\r
+///\r
+/// Based relocation format.\r
+///\r
+typedef struct {\r
+  UINT32  VirtualAddress;\r
+  UINT32  SizeOfBlock;\r
+} EFI_IMAGE_BASE_RELOCATION;\r
+\r
+#define EFI_IMAGE_SIZEOF_BASE_RELOCATION  8\r
+\r
+//\r
+// Based relocation types.\r
+//\r
+#define EFI_IMAGE_REL_BASED_ABSOLUTE      0\r
+#define EFI_IMAGE_REL_BASED_HIGH          1\r
+#define EFI_IMAGE_REL_BASED_LOW           2\r
+#define EFI_IMAGE_REL_BASED_HIGHLOW       3\r
+#define EFI_IMAGE_REL_BASED_HIGHADJ       4\r
+#define EFI_IMAGE_REL_BASED_MIPS_JMPADDR  5\r
+#define EFI_IMAGE_REL_BASED_IA64_IMM64    9\r
+#define EFI_IMAGE_REL_BASED_DIR64         10\r
+\r
+///\r
+/// Line number format.\r
+///\r
+typedef struct {\r
+  union {\r
+    UINT32  SymbolTableIndex; // Symbol table index of function name if Linenumber is 0.\r
+    UINT32  VirtualAddress;   // Virtual address of line number.\r
+  } Type;\r
+  UINT16  Linenumber;         // Line number.\r
+} EFI_IMAGE_LINENUMBER;\r
+\r
+#define EFI_IMAGE_SIZEOF_LINENUMBER 6\r
+\r
+//\r
+// Archive format.\r
+//\r
+#define EFI_IMAGE_ARCHIVE_START_SIZE        8\r
+#define EFI_IMAGE_ARCHIVE_START             "!<arch>\n"\r
+#define EFI_IMAGE_ARCHIVE_END               "`\n"\r
+#define EFI_IMAGE_ARCHIVE_PAD               "\n"\r
+#define EFI_IMAGE_ARCHIVE_LINKER_MEMBER     "/               "\r
+#define EFI_IMAGE_ARCHIVE_LONGNAMES_MEMBER  "//              "\r
+\r
+typedef struct {\r
+  UINT8 Name[16];     // File member name - `/' terminated.\r
+  UINT8 Date[12];     // File member date - decimal.\r
+  UINT8 UserID[6];    // File member user id - decimal.\r
+  UINT8 GroupID[6];   // File member group id - decimal.\r
+  UINT8 Mode[8];      // File member mode - octal.\r
+  UINT8 Size[10];     // File member size - decimal.\r
+  UINT8 EndHeader[2]; // String to end header.\r
+} EFI_IMAGE_ARCHIVE_MEMBER_HEADER;\r
+\r
+#define EFI_IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60\r
+\r
+//\r
+// DLL support.\r
+//\r
+\r
+///\r
+/// DLL Export Format\r
+///\r
+typedef struct {\r
+  UINT32  Characteristics;\r
+  UINT32  TimeDateStamp;\r
+  UINT16  MajorVersion;\r
+  UINT16  MinorVersion;\r
+  UINT32  Name;\r
+  UINT32  Base;\r
+  UINT32  NumberOfFunctions;\r
+  UINT32  NumberOfNames;\r
+  UINT32  AddressOfFunctions;\r
+  UINT32  AddressOfNames;\r
+  UINT32  AddressOfNameOrdinals;\r
+} EFI_IMAGE_EXPORT_DIRECTORY;\r
+\r
+///\r
+/// DLL support.\r
+/// Import Format\r
+///\r
+typedef struct {\r
+  UINT16  Hint;\r
+  UINT8   Name[1];\r
+} EFI_IMAGE_IMPORT_BY_NAME;\r
+\r
+typedef struct {\r
+  union {\r
+    UINT32                    Function;\r
+    UINT32                    Ordinal;\r
+    EFI_IMAGE_IMPORT_BY_NAME  *AddressOfData;\r
+  } u1;\r
+} EFI_IMAGE_THUNK_DATA;\r
+\r
+#define EFI_IMAGE_ORDINAL_FLAG              0x80000000\r
+#define EFI_IMAGE_SNAP_BY_ORDINAL(Ordinal)  ((Ordinal & EFI_IMAGE_ORDINAL_FLAG) != 0)\r
+#define EFI_IMAGE_ORDINAL(Ordinal)          (Ordinal & 0xffff)\r
+\r
+typedef struct {\r
+  UINT32                Characteristics;\r
+  UINT32                TimeDateStamp;\r
+  UINT32                ForwarderChain;\r
+  UINT32                Name;\r
+  EFI_IMAGE_THUNK_DATA  *FirstThunk;\r
+} EFI_IMAGE_IMPORT_DESCRIPTOR;\r
+\r
+///\r
+/// Debug Format\r
+///\r
+#define EFI_IMAGE_DEBUG_TYPE_CODEVIEW 2\r
+\r
+typedef struct {\r
+  UINT32  Characteristics;\r
+  UINT32  TimeDateStamp;\r
+  UINT16  MajorVersion;\r
+  UINT16  MinorVersion;\r
+  UINT32  Type;\r
+  UINT32  SizeOfData;\r
+  UINT32  RVA;\r
+  UINT32  FileOffset;\r
+} EFI_IMAGE_DEBUG_DIRECTORY_ENTRY;\r
+\r
+#define CODEVIEW_SIGNATURE_NB10 0x3031424E  // "NB10"\r
+typedef struct {\r
+  UINT32  Signature;                        // "NB10"\r
+  UINT32  Unknown;\r
+  UINT32  Unknown2;\r
+  UINT32  Unknown3;\r
+  //\r
+  // Filename of .PDB goes here\r
+  //\r
+} EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY;\r
+\r
+#define CODEVIEW_SIGNATURE_RSDS 0x53445352  // "RSDS"\r
+typedef struct {\r
+  UINT32  Signature;                        // "RSDS"\r
+  UINT32  Unknown;\r
+  UINT32  Unknown2;\r
+  UINT32  Unknown3;\r
+  UINT32  Unknown4;\r
+  UINT32  Unknown5;\r
+  //\r
+  // Filename of .PDB goes here\r
+  //\r
+} EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY;\r
+\r
+//\r
+// .pdata entries for X64\r
+//\r
+typedef struct {\r
+  UINT32  FunctionStartAddress;\r
+  UINT32  FunctionEndAddress;\r
+  UINT32  UnwindInfoAddress;\r
+} RUNTIME_FUNCTION;\r
+\r
+typedef struct {\r
+  UINT8  Version:3;\r
+  UINT8  Flags:5;\r
+  UINT8  SizeOfProlog;\r
+  UINT8  CountOfUnwindCodes;\r
+  UINT8  FrameRegister:4;\r
+  UINT8  FrameRegisterOffset:4;\r
+} UNWIND_INFO;\r
+\r
+///\r
+/// Header format for TE images\r
+///\r
+typedef struct {\r
+  UINT16                    Signature;            // signature for TE format = "VZ"\r
+  UINT16                    Machine;              // from the original file header\r
+  UINT8                     NumberOfSections;     // from the original file header\r
+  UINT8                     Subsystem;            // from original optional header\r
+  UINT16                    StrippedSize;         // how many bytes we removed from the header\r
+  UINT32                    AddressOfEntryPoint;  // offset to entry point -- from original optional header\r
+  UINT32                    BaseOfCode;           // from original image -- required for ITP debug\r
+  UINT64                    ImageBase;            // from original file header\r
+  EFI_IMAGE_DATA_DIRECTORY  DataDirectory[2];     // only base relocation and debug directory\r
+} EFI_TE_IMAGE_HEADER;\r
+\r
+#define EFI_TE_IMAGE_HEADER_SIGNATURE 0x5A56      // "VZ"\r
+\r
+//\r
+// Data directory indexes in our TE image header\r
+//\r
+#define EFI_TE_IMAGE_DIRECTORY_ENTRY_BASERELOC  0\r
+#define EFI_TE_IMAGE_DIRECTORY_ENTRY_DEBUG      1\r
+\r
+\r
+//\r
+// Union of PE32, PE32+, and TE headers\r
+//\r
+typedef union {\r
+  EFI_IMAGE_NT_HEADERS32   Pe32;\r
+  EFI_IMAGE_NT_HEADERS64   Pe32Plus;\r
+  EFI_TE_IMAGE_HEADER      Te;\r
+} EFI_IMAGE_OPTIONAL_HEADER_UNION;\r
+\r
+typedef union {\r
+  EFI_IMAGE_NT_HEADERS32            *Pe32;\r
+  EFI_IMAGE_NT_HEADERS64            *Pe32Plus;\r
+  EFI_TE_IMAGE_HEADER               *Te;\r
+  EFI_IMAGE_OPTIONAL_HEADER_UNION   *Union;\r
+} EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION;\r
+\r
+#endif\r
diff --git a/Source/C/Include/Protocol/DevicePath.h b/Source/C/Include/Protocol/DevicePath.h
deleted file mode 100644 (file)
index d019999..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/** @file\r
-  The device path protocol as defined in EFI 1.0.\r
-\r
-  The device path represents a programatic path to a device. It's the view\r
-  from a software point of view. It also must persist from boot to boot, so \r
-  it can not contain things like PCI bus numbers that change from boot to boot.\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:  DevicePath.h\r
-\r
-**/\r
-\r
-#ifndef __EFI_DEVICE_PATH_PROTOCOL_H__\r
-#define __EFI_DEVICE_PATH_PROTOCOL_H__\r
-\r
-//\r
-// Device Path protocol\r
-//\r
-#define EFI_DEVICE_PATH_PROTOCOL_GUID \\r
-  { \\r
-    0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \\r
-  }\r
-\r
-#pragma pack(1)\r
-\r
-typedef struct {\r
-  UINT8 Type;\r
-  UINT8 SubType;\r
-  UINT8 Length[2];\r
-} EFI_DEVICE_PATH_PROTOCOL;\r
-\r
-#pragma pack()\r
-                                             \r
-#define EFI_DP_TYPE_MASK                     0x7F\r
-#define EFI_DP_TYPE_UNPACKED                 0x80\r
-#define END_DEVICE_PATH_TYPE                 0x7f\r
-                                             \r
-#define EFI_END_ENTIRE_DEVICE_PATH           0xff\r
-#define EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE   0xff\r
-#define EFI_END_INSTANCE_DEVICE_PATH         0x01\r
-#define END_ENTIRE_DEVICE_PATH_SUBTYPE       EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE\r
-#define END_INSTANCE_DEVICE_PATH_SUBTYPE     EFI_END_INSTANCE_DEVICE_PATH\r
-                                             \r
-#define EFI_END_DEVICE_PATH_LENGTH           (sizeof (EFI_DEVICE_PATH_PROTOCOL))\r
-#define END_DEVICE_PATH_LENGTH               EFI_END_DEVICE_PATH_LENGTH\r
-                                             \r
-#define DP_IS_END_TYPE(a)                    \r
-#define DP_IS_END_SUBTYPE(a)                 (((a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE)\r
-#define DevicePathSubType(a)                 ((a)->SubType)\r
-#define IsDevicePathUnpacked(a)              ((a)->Type & EFI_DP_TYPE_UNPACKED)\r
-                                             \r
-#define EfiDevicePathNodeLength(a)           (((a)->Length[0]) | ((a)->Length[1] << 8))\r
-#define DevicePathNodeLength(a)              (EfiDevicePathNodeLength(a))\r
-#define EfiNextDevicePathNode(a)             ((EFI_DEVICE_PATH_PROTOCOL *) (((UINT8 *) (a)) + EfiDevicePathNodeLength (a)))\r
-#define NextDevicePathNode(a)                (EfiNextDevicePathNode(a)) \r
-                                             \r
-#define EfiDevicePathType(a)                 (((a)->Type) & EFI_DP_TYPE_MASK)\r
-#define DevicePathType(a)                    (EfiDevicePathType(a))\r
-#define EfiIsDevicePathEndType(a)            (EfiDevicePathType (a) == END_DEVICE_PATH_TYPE)\r
-#define IsDevicePathEndType(a)               (EfiIsDevicePathEndType(a)) \r
-                                             \r
-                                             \r
-#define EfiIsDevicePathEndSubType(a)         ((a)->SubType == EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE)\r
-#define IsDevicePathEndSubType(a)            (EfiIsDevicePathEndSubType(a))\r
-#define EfiIsDevicePathEndInstanceSubType(a) ((a)->SubType == EFI_END_INSTANCE_DEVICE_PATH)\r
-                                             \r
-#define EfiIsDevicePathEnd(a)                (EfiIsDevicePathEndType (a) && EfiIsDevicePathEndSubType (a))\r
-#define IsDevicePathEnd(a)                   (EfiIsDevicePathEnd(a))\r
-#define EfiIsDevicePathEndInstance(a)        (EfiIsDevicePathEndType (a) && EfiIsDevicePathEndInstanceSubType (a))\r
-\r
-\r
-#define SetDevicePathNodeLength(a,l) {                           \\r
-          (a)->Length[0] = (UINT8) (l);                          \\r
-          (a)->Length[1] = (UINT8) ((l) >> 8);                   \\r
-          }\r
-\r
-#define SetDevicePathEndNode(a)  {                               \\r
-          (a)->Type = END_DEVICE_PATH_TYPE;                      \\r
-          (a)->SubType = END_ENTIRE_DEVICE_PATH_SUBTYPE;         \\r
-          (a)->Length[0] = sizeof(EFI_DEVICE_PATH_PROTOCOL);     \\r
-          (a)->Length[1] = 0;                                    \\r
-          }\r
-\r
-extern EFI_GUID gEfiDevicePathProtocolGuid;\r
-\r
-#endif\r
index d98c56a..8100064 100644 (file)
   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:  GuidedSectionExtraction.h\r
-\r
-  @par Revision Reference:\r
-  This protocol is defined in Firmware Volume Specification.\r
-  Version 0.9\r
+  @par Revision Reference: PI\r
+  Version 1.00.\r
 \r
 **/\r
 \r
-#ifndef __GUIDED_SECTION_EXTRACTION_PROTOCOL_H__\r
-#define __GUIDED_SECTION_EXTRACTION_PROTOCOL_H__\r
-\r
-\r
-//\r
-// Protocol GUID definition. Each GUIDed section extraction protocol has the\r
-// same interface but with different GUID. All the GUIDs is defined here.\r
-// May add multiple GUIDs here.\r
-//\r
-#define EFI_CRC32_GUIDED_SECTION_EXTRACTION_PROTOCOL_GUID \\r
-  { \\r
-    0xFC1BCDB0, 0x7D31, 0x49aa, {0x93, 0x6A, 0xA4, 0x60, 0x0D, 0x9D, 0xD0, 0x83 } \\r
-  }\r
+#ifndef __EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL_H__\r
+#define __EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL_H__\r
 \r
 //\r
 // Forward reference for pure ANSI compatability\r
-//\r
-typedef struct _EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL  EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL;\r
 \r
-//\r
-// Protocol member functions\r
-//\r
+typedef struct _EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL;\r
+\r
+\r
 /**\r
-  Processes the input section and returns the data contained therein along \r
-  with the authentication status.\r
-\r
-  @param  This                  Indicates the EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL instance.  \r
-  @param  InputSection          Buffer containing the input GUIDed section to be processed.  \r
-  @param  OutputBuffer          *OutputBuffer is allocated from boot services pool memory \r
-                                and contains the new section stream.  \r
-  @param  OutputSize            A pointer to a caller-allocated UINTN in which the size \r
-                                of *OutputBuffer allocation is stored.   \r
-  @param  AuthenticationStatus  A pointer to a caller-allocated UINT32 that \r
-                                indicates the authentication status of the output buffer.\r
-                                \r
-  @retval EFI_SUCCESS           The InputSection was successfully processed and the \r
-                                section contents were returned.\r
-  @retval EFI_OUT_OF_RESOURCES  The system has insufficient resources to \r
-                                process the request.\r
-  @retval EFI_INVALID_PARAMETER The GUID in InputSection does not match \r
-                                this instance of the GUIDed Section Extraction Protocol.\r
+  The ExtractSection() function processes the input section and\r
+  allocates a buffer from the pool in which it returns the section\r
+  contents. If the section being extracted contains\r
+  authentication information (the section's\r
+  GuidedSectionHeader.Attributes field has the\r
+  EFI_GUIDED_SECTION_AUTH_STATUS_VALID bit set), the values\r
+  returned in AuthenticationStatus must reflect the results of\r
+  the authentication operation. Depending on the algorithm and\r
+  size of the encapsulated data, the time that is required to do\r
+  a full authentication may be prohibitively long for some\r
+  classes of systems. To indicate this, use\r
+  EFI_SECURITY_POLICY_PROTOCOL_GUID, which may be published by\r
+  the security policy driver (see the Platform Initialization\r
+  Driver Execution Environment Core Interface Specification for\r
+  more details and the GUID definition). If the\r
+  EFI_SECURITY_POLICY_PROTOCOL_GUID exists in the handle\r
+  database, then, if possible, full authentication should be\r
+  skipped and the section contents simply returned in the\r
+  OutputBuffer. In this case, the\r
+  EFI_AUTH_STATUS_PLATFORM_OVERRIDE bit AuthenticationStatus\r
+  must be set on return. ExtractSection() is callable only from\r
+  TPL_NOTIFY and below. Behavior of ExtractSection() at any\r
+  EFI_TPL above TPL_NOTIFY is undefined. Type EFI_TPL is\r
+  defined in RaiseTPL() in the UEFI 2.0 specification.\r
+\r
+  \r
+  @param This   Indicates the\r
+                EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL instance.\r
+  \r
+  @param InputSection Buffer containing the input GUIDed section\r
+                      to be processed. OutputBuffer OutputBuffer\r
+                      is allocated from boot services pool\r
+                      memory and contains the new section\r
+                      stream. The caller is responsible for\r
+                      freeing this buffer.\r
+\r
+  @param OutputSize   A pointer to a caller-allocated UINTN in\r
+                      which the size of OutputBuffer allocation\r
+                      is stored. If the function returns\r
+                      anything other than EFI_SUCCESS, the value\r
+                      of OutputSize is undefined.\r
+\r
+  @param AuthenticationStatus A pointer to a caller-allocated\r
+                              UINT32 that indicates the\r
+                              authentication status of the\r
+                              output buffer. If the input\r
+                              section's\r
+                              GuidedSectionHeader.Attributes\r
+                              field has the\r
+                              EFI_GUIDED_SECTION_AUTH_STATUS_VAL\r
+                              bit as clear, AuthenticationStatus\r
+                              must return zero. Both local bits\r
+                              (19:16) and aggregate bits (3:0)\r
+                              in AuthenticationStatus are\r
+                              returned by ExtractSection().\r
+                              These bits reflect the status of\r
+                              the extraction operation. The bit\r
+                              pattern in both regions must be\r
+                              the same, as the local and\r
+                              aggregate authentication statuses\r
+                              have equivalent meaning at this\r
+                              level. If the function returns\r
+                              anything other than EFI_SUCCESS,\r
+                              the value of AuthenticationStatus\r
+                              is undefined.\r
+\r
+\r
+  @retval EFI_SUCCESS The InputSection was successfully\r
+                      processed and the section contents were\r
+                      returned.\r
+\r
+  @retval EFI_OUT_OF_RESOURCES  The system has insufficient\r
+                                resources to process the\r
+                                request.\r
+\r
+  @retval EFI_INVALID_PARAMETER The GUID in InputSection does\r
+                                not match this instance of the\r
+                                GUIDed Section Extraction\r
+                                Protocol.\r
 \r
 **/\r
-\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_EXTRACT_GUIDED_SECTION) (\r
-  IN  EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL          *This,\r
-  IN  VOID                                            *InputSection,\r
-  OUT VOID                                            **OutputBuffer,\r
-  OUT UINTN                                           *OutputSize,\r
-  OUT UINT32                                          *AuthenticationStatus\r
-  );\r
+(EFIAPI *EFI_EXTRACT_GUIDED_SECTION)(\r
+  IN CONST  EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL  *This,\r
+  IN CONST  VOID                                    *InputSection,\r
+  OUT       VOID                                    **OutputBuffer,\r
+  OUT       UINTN                                   *OutputSize,\r
+  OUT       UINT32                                  *AuthenticationStatus\r
+);\r
 \r
-//\r
-// Protocol definition\r
-//\r
-/**\r
-  @par Protocol Description:\r
-  If a GUID-defined section is encountered when doing section extraction, \r
-  the section extraction driver calls the appropriate instance of the GUIDed \r
-  Section Extraction Protocol to extract the section stream contained therein.\r
 \r
-  @param ExtractSection\r
-  Takes the GUIDed section as input and produces the section stream data. \r
+/**\r
+  \r
+  Takes the GUIDed section as input and produces the section\r
+  stream data. See the ExtractSection() function description.\r
 \r
 **/\r
 struct _EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL {\r
   EFI_EXTRACT_GUIDED_SECTION  ExtractSection;\r
 };\r
 \r
+//\r
+// Protocol GUID definition. Each GUIDed section extraction protocol has the\r
+// same interface but with different GUID. All the GUIDs is defined here.\r
+// May add multiple GUIDs here.\r
+//\r
+#define EFI_CRC32_GUIDED_SECTION_EXTRACTION_PROTOCOL_GUID \\r
+  { \\r
+    0xFC1BCDB0, 0x7D31, 0x49aa, {0x93, 0x6A, 0xA4, 0x60, 0x0D, 0x9D, 0xD0, 0x83 } \\r
+  }\r
+\r
 //\r
 // may add other GUID here\r
 //\r
diff --git a/Source/C/Include/Protocol/Hii.h b/Source/C/Include/Protocol/Hii.h
deleted file mode 100644 (file)
index d1c3c25..0000000
+++ /dev/null
@@ -1,1024 +0,0 @@
-/** @file\r
-  This file defines the Human Interface Infrastructure protocol which will \r
-  be used by resources which want to publish IFR/Font/String data and have it \r
-  collected by the Configuration engine.\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:  Hii.h\r
-\r
-  @par Revision Reference:\r
-  This protocol is defined in HII spec 0.92.\r
-\r
-**/\r
-\r
-#ifndef __HII_H__\r
-#define __HII_H__\r
-\r
-\r
-#define EFI_HII_PROTOCOL_GUID \\r
-  { \\r
-    0xea816d2c, 0xcee5, 0x4f02, {0x99, 0xb5, 0xd3, 0x90, 0x5c, 0xbb, 0xd0, 0x77 } \\r
-  }\r
-\r
-// BugBug:\r
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r
-// If UGA goes away we need to put this some place. I'm not sure where?\r
-//\r
-//typedef struct {\r
-//  UINT8 Blue;\r
-//  UINT8 Green;\r
-//  UINT8 Red;\r
-//  UINT8 Reserved;\r
-//} EFI_UGA_PIXEL;\r
-\r
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r
-//\r
-\r
-typedef struct _EFI_HII_PROTOCOL  EFI_HII_PROTOCOL;\r
-\r
-//\r
-// Global definition\r
-//\r
-#define NARROW_CHAR         0xFFF0\r
-#define WIDE_CHAR           0xFFF1\r
-#define NON_BREAKING_CHAR   0xFFF2\r
-#define GLYPH_WIDTH         8\r
-#define GLYPH_HEIGHT        19\r
-\r
-#define EFI_HII_FONT        1\r
-#define EFI_HII_STRING      2\r
-#define EFI_HII_IFR         3\r
-#define EFI_HII_KEYBOARD    4\r
-#define EFI_HII_HANDLES     5\r
-#define EFI_HII_VARIABLE    6\r
-#define EFI_HII_DEVICE_PATH 7\r
-\r
-\r
-// References to string tokens must use this macro to enable scanning for\r
-// token usages.\r
-//\r
-#define STRING_TOKEN(t) t\r
-\r
-//\r
-// The following types are currently defined:\r
-//\r
-typedef UINT16  EFI_FORM_ID;\r
-typedef UINT16  EFI_FORM_LABEL;\r
-\r
-#pragma pack(1)\r
-\r
-typedef struct {\r
-  UINT32  Length;\r
-  UINT16  Type;\r
-} EFI_HII_PACK_HEADER;\r
-\r
-//\r
-// A form list consists of a large variety of structure\r
-// possibilities so to represent the binary blob of data\r
-// associated with a package of forms, we will assume a\r
-// pointer to a self-describing data buffer.\r
-//\r
-typedef struct {\r
-  EFI_HII_PACK_HEADER Header;\r
-} EFI_HII_IFR_PACK;\r
-\r
-typedef struct {\r
-  EFI_HII_PACK_HEADER Header;           // Must be filled in\r
-  EFI_HANDLE          ImageHandle;      // Must be filled in\r
-  EFI_HANDLE          DeviceHandle;     // Optional\r
-  EFI_HANDLE          ControllerHandle; // Optional\r
-  EFI_HANDLE          CallbackHandle;   // Optional\r
-  EFI_HANDLE          COBExportHandle;  // Optional\r
-} EFI_HII_HANDLE_PACK;\r
-\r
-//\r
-// ********************************************************\r
-// EFI_VARIABLE_CONTENTS\r
-// ********************************************************\r
-//\r
-typedef struct {\r
-  EFI_HII_PACK_HEADER Header;\r
-  EFI_GUID            VariableGuid;\r
-  UINT32              VariableNameLength;\r
-  UINT16              VariableId;\r
-  //\r
-  //  CHAR16                VariableName[]; //Null-terminated\r
-  //\r
-} EFI_HII_VARIABLE_PACK;\r
-\r
-//\r
-// ********************************************************\r
-// EFI_DEVICE_PATH_PACK\r
-// ********************************************************\r
-//\r
-typedef struct {\r
-  EFI_HII_PACK_HEADER Header;\r
-  //\r
-  //  EFI_DEVICE_PATH       DevicePath[];\r
-  //\r
-} EFI_HII_DEVICE_PATH_PACK;\r
-\r
-//\r
-// ********************************************************\r
-// EFI_HII_DATA_TABLE\r
-// ********************************************************\r
-//\r
-typedef struct {\r
-  EFI_HII_HANDLE  HiiHandle;\r
-  EFI_GUID        PackageGuid;\r
-  UINT32          DataTableSize;\r
-  UINT32          IfrDataOffset;\r
-  UINT32          StringDataOffset;\r
-  UINT32          VariableDataOffset;\r
-  UINT32          DevicePathOffset;\r
-  UINT32          NumberOfVariableData;\r
-  UINT32          NumberOfLanguages;\r
-  //\r
-  // EFI_HII_DEVICE_PATH_PACK DevicePath[];\r
-  // EFI_HII_VARIABLE_PACK VariableData[];\r
-  // EFI_HII_IFR_PACK IfrData;\r
-  // EFI_HII_STRING_PACK StringData[];\r
-  //\r
-} EFI_HII_DATA_TABLE;\r
-\r
-//\r
-// ********************************************************\r
-// EFI_HII_EXPORT_TABLE\r
-// ********************************************************\r
-//\r
-typedef struct {\r
-  UINT32    NumberOfHiiDataTables;\r
-  EFI_GUID  Revision;\r
-  //\r
-  // EFI_HII_DATA_TABLE HiiDataTable[];\r
-  //\r
-} EFI_HII_EXPORT_TABLE;\r
-\r
-typedef struct {\r
-  BOOLEAN               FormSetUpdate;      // If TRUE, next variable is significant\r
-  EFI_PHYSICAL_ADDRESS  FormCallbackHandle; // If not 0, will update Formset with this info\r
-  BOOLEAN               FormUpdate;         // If TRUE, next variable is significant\r
-  UINT16                FormValue;          // specify which form is to be updated if FormUpdate value is TRUE.\r
-  STRING_REF            FormTitle;          // If not 0, will update Form with this info\r
-  UINT16                DataCount;          // The number of Data entries in this structure\r
-  UINT8                 *Data;              // An array of 1+ op-codes, specified by DataCount\r
-} EFI_HII_UPDATE_DATA;\r
-\r
-//\r
-// String attributes\r
-//\r
-#define LANG_RIGHT_TO_LEFT  0x00000001\r
-\r
-//\r
-// A string package is used to localize strings to a particular\r
-// language.  The package is associated with a particular driver\r
-// or set of drivers.  Tools are used to associate tokens with\r
-// string references in forms and in programs.  These tokens are\r
-// language agnostic.  When paired with a language pack (directly\r
-// or indirectly), the string token resolves into an actual\r
-// UNICODE string.  The NumStringPointers determines how many\r
-// StringPointers (offset values) there are as well as the total\r
-// number of Strings that are defined.\r
-//\r
-typedef struct {\r
-  EFI_HII_PACK_HEADER Header;\r
-  RELOFST             LanguageNameString;\r
-  RELOFST             PrintableLanguageName;\r
-  UINT32              NumStringPointers;\r
-  UINT32              Attributes;\r
-  //\r
-  //  RELOFST               StringPointers[];\r
-  //  EFI_STRING            Strings[];\r
-  //\r
-} EFI_HII_STRING_PACK;\r
-\r
-//\r
-// Glyph Attributes\r
-//\r
-#define EFI_GLYPH_NON_SPACING   1\r
-#define EFI_GLYPH_WIDE          2\r
-\r
-typedef struct {\r
-  CHAR16  UnicodeWeight;\r
-  UINT8   Attributes;\r
-  UINT8   GlyphCol1[GLYPH_HEIGHT];\r
-} EFI_NARROW_GLYPH;\r
-\r
-typedef struct {\r
-  CHAR16  UnicodeWeight;\r
-  UINT8   Attributes;\r
-  UINT8   GlyphCol1[GLYPH_HEIGHT];\r
-  UINT8   GlyphCol2[GLYPH_HEIGHT];\r
-  UINT8   Pad[3];\r
-} EFI_WIDE_GLYPH;\r
-\r
-//\r
-// A font list consists of a font header followed by a series\r
-// of glyph structures.  Note that fonts are not language specific.\r
-//\r
-typedef struct {\r
-  EFI_HII_PACK_HEADER Header;\r
-  UINT16              NumberOfNarrowGlyphs;\r
-  UINT16              NumberOfWideGlyphs;\r
-} EFI_HII_FONT_PACK;\r
-\r
-//\r
-// The IfrData in the EFI_HII_IFR_PACK structure definition\r
-// is variable length, and not really part of the header. To\r
-// simplify from code the size of the header, define an\r
-// identical structure that does not include the IfrData field.\r
-// Then use sizeof() this new structure to determine the\r
-// actual size of the header.\r
-//\r
-typedef struct {\r
-  EFI_HII_PACK_HEADER Header;\r
-} EFI_HII_IFR_PACK_HEADER;\r
-\r
-//\r
-// pedef EFI_HII_PACK_HEADER EFI_HII_IFR_PACK_HEADER;\r
-//\r
-typedef enum {\r
-  EfiKeyLCtrl,\r
-  EfiKeyA0,\r
-  EfiKeyLAlt,\r
-  EfiKeySpaceBar,\r
-  EfiKeyA2,\r
-  EfiKeyA3,\r
-  EfiKeyA4,\r
-  EfiKeyRCtrl,\r
-  EfiKeyLeftArrow,\r
-  EfiKeyDownArrow,\r
-  EfiKeyRightArrow,\r
-  EfiKeyZero,\r
-  EfiKeyPeriod,\r
-  EfiKeyEnter,\r
-  EfiKeyLShift,\r
-  EfiKeyB0,\r
-  EfiKeyB1,\r
-  EfiKeyB2,\r
-  EfiKeyB3,\r
-  EfiKeyB4,\r
-  EfiKeyB5,\r
-  EfiKeyB6,\r
-  EfiKeyB7,\r
-  EfiKeyB8,\r
-  EfiKeyB9,\r
-  EfiKeyB10,\r
-  EfiKeyRshift,\r
-  EfiKeyUpArrow,\r
-  EfiKeyOne,\r
-  EfiKeyTwo,\r
-  EfiKeyThree,\r
-  EfiKeyCapsLock,\r
-  EfiKeyC1,\r
-  EfiKeyC2,\r
-  EfiKeyC3,\r
-  EfiKeyC4,\r
-  EfiKeyC5,\r
-  EfiKeyC6,\r
-  EfiKeyC7,\r
-  EfiKeyC8,\r
-  EfiKeyC9,\r
-  EfiKeyC10,\r
-  EfiKeyC11,\r
-  EfiKeyC12,\r
-  EfiKeyFour,\r
-  EfiKeyFive,\r
-  EfiKeySix,\r
-  EfiKeyPlus,\r
-  EfiKeyTab,\r
-  EfiKeyD1,\r
-  EfiKeyD2,\r
-  EfiKeyD3,\r
-  EfiKeyD4,\r
-  EfiKeyD5,\r
-  EfiKeyD6,\r
-  EfiKeyD7,\r
-  EfiKeyD8,\r
-  EfiKeyD9,\r
-  EfiKeyD10,\r
-  EfiKeyD11,\r
-  EfiKeyD12,\r
-  EfiKeyD13,\r
-  EfiKeyDel,\r
-  EfiKeyEnd,\r
-  EfiKeyPgDn,\r
-  EfiKeySeven,\r
-  EfiKeyEight,\r
-  EfiKeyNine,\r
-  EfiKeyE0,\r
-  EfiKeyE1,\r
-  EfiKeyE2,\r
-  EfiKeyE3,\r
-  EfiKeyE4,\r
-  EfiKeyE5,\r
-  EfiKeyE6,\r
-  EfiKeyE7,\r
-  EfiKeyE8,\r
-  EfiKeyE9,\r
-  EfiKeyE10,\r
-  EfiKeyE11,\r
-  EfiKeyE12,\r
-  EfiKeyBackSpace,\r
-  EfiKeyIns,\r
-  EfiKeyHome,\r
-  EfiKeyPgUp,\r
-  EfiKeyNLck,\r
-  EfiKeySlash,\r
-  EfiKeyAsterisk,\r
-  EfiKeyMinus,\r
-  EfiKeyEsc,\r
-  EfiKeyF1,\r
-  EfiKeyF2,\r
-  EfiKeyF3,\r
-  EfiKeyF4,\r
-  EfiKeyF5,\r
-  EfiKeyF6,\r
-  EfiKeyF7,\r
-  EfiKeyF8,\r
-  EfiKeyF9,\r
-  EfiKeyF10,\r
-  EfiKeyF11,\r
-  EfiKeyF12,\r
-  EfiKeyPrint,\r
-  EfiKeySLck,\r
-  EfiKeyPause\r
-} EFI_KEY;\r
-\r
-typedef struct {\r
-  EFI_KEY Key;\r
-  CHAR16  Unicode;\r
-  CHAR16  ShiftedUnicode;\r
-  CHAR16  AltGrUnicode;\r
-  CHAR16  ShiftedAltGrUnicode;\r
-  UINT16  Modifier;\r
-} EFI_KEY_DESCRIPTOR;\r
-\r
-//\r
-// This structure allows a sparse set of keys to be redefined\r
-// or a complete redefinition of the keyboard layout.  Most\r
-// keyboards have a lot of commonality in their layouts, therefore\r
-// only defining those keys that need to change from the default\r
-// minimizes the passed in information.\r
-//\r
-// Additionally, when an update occurs, the active keyboard layout\r
-// will be switched to the newly updated keyboard layout.  This\r
-// allows for situations that when a keyboard layout driver is\r
-// loaded as part of system initialization, the system will default\r
-// the keyboard behavior to the new layout.\r
-//\r
-// Each call to update the keyboard mapping should contain the\r
-// complete set of key descriptors to be updated, since every\r
-// call to the HII which contains an EFI_HII_KEYBOARD_PACK will\r
-// wipe the previous set of overrides.  A call to\r
-//\r
-typedef struct {\r
-  EFI_HII_PACK_HEADER Header;\r
-  EFI_KEY_DESCRIPTOR  *Descriptor;\r
-  UINT8               DescriptorCount;\r
-} EFI_HII_KEYBOARD_PACK;\r
-\r
-//\r
-// The EFI_HII_PACKAGES can contain different types of packages just\r
-// after the structure as inline data.\r
-//\r
-typedef struct {\r
-  UINTN     NumberOfPackages;\r
-  EFI_GUID  *GuidId;\r
-  //\r
-  // EFI_HII_HANDLE_PACK    *HandlePack;        // Only one pack.\r
-  // EFI_HII_IFR_PACK       *IfrPack;           // Only one pack.\r
-  // EFI_HII_FONT_PACK      *FontPack[];        // Multiple packs ok\r
-  // EFI_HII_STRING_PACK    *StringPack[];      // Multiple packs ok\r
-  // EFI_HII_KEYBOARD_PACK  *KeyboardPack[];    // Multiple packs ok\r
-  //\r
-} EFI_HII_PACKAGES;\r
-\r
-typedef struct _EFI_HII_VARIABLE_PACK_LIST {\r
-  struct _EFI_HII_VARIABLE_PACK_LIST   *NextVariablePack;\r
-  EFI_HII_VARIABLE_PACK                *VariablePack;\r
-} EFI_HII_VARIABLE_PACK_LIST;\r
-\r
-#pragma pack()\r
-\r
-/**\r
-  Registers the various packs that are passed in via the Packages parameter. \r
-\r
-  @param  This A pointer to the EFI_HII_PROTOCOL instance.\r
-  \r
-  @param  Packages A pointer to an EFI_HII_PACKAGES package instance.\r
-  \r
-  @param  Handle A pointer to the EFI_HII_HANDLE instance.\r
-\r
-  @retval EFI_SUCCESS Data was extracted from Packages, the database \r
-  was updated with the data, and Handle returned successfully.\r
-  \r
-  @retval EFI_INVALID_PARAMETER The content of Packages  was invalid. \r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_NEW_PACK) (\r
-  IN  EFI_HII_PROTOCOL    *This,\r
-  IN  EFI_HII_PACKAGES    *Packages,\r
-  OUT EFI_HII_HANDLE      *Handle\r
-  );\r
-\r
-/**\r
-  Removes a package from the HII database. \r
-\r
-  @param  This A pointer to the EFI_HII_PROTOCOL instance.\r
-  \r
-  @param  Handle The handle that was registered to the data that is requested \r
-  for removal. \r
-\r
-  @retval EFI_SUCCESS The data associated with the Handle was removed \r
-  from the HII database.\r
-  \r
-  @retval EFI_INVALID_PARAMETER The Handle was not valid. \r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_REMOVE_PACK) (\r
-  IN EFI_HII_PROTOCOL    *This,\r
-  IN EFI_HII_HANDLE      Handle\r
-  );\r
-\r
-/**\r
-  Determines the handles that are currently active in the database.\r
-\r
-  @param  This A pointer to the EFI_HII_PROTOCOL instance.\r
-  \r
-  @param  HandleBufferLength On input, a pointer to the length of the handle \r
-  buffer. On output, the length of the handle buffer that is required \r
-  for the handles found.\r
-  \r
-  @param  Handle An array of EFI_HII_HANDLE instances returned.\r
-\r
-  @retval EFI_SUCCESS Handle was updated successfully.\r
-  \r
-  @retval EFI_BUFFER_TOO_SMALL The HandleBufferLength parameter indicates \r
-  that Handle is too small to support the number of handles.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_FIND_HANDLES) (\r
-  IN     EFI_HII_PROTOCOL *This,\r
-  IN OUT UINT16           *HandleBufferLength,\r
-  OUT    EFI_HII_HANDLE   *Handle\r
-  );\r
-\r
-/**\r
-  Exports the contents of the database into a buffer.\r
-\r
-  @param  This A pointer to the EFI_HII_PROTOCOL instance.\r
-  \r
-  @param  Handle An EFI_HII_HANDLE that corresponds to the desired \r
-  handle to export. If the value is 0, the entire database will be exported.\r
-  In either case, the data will be exported in a format described by the \r
-  structure definition of EFI_HII_EXPORT_TABLE.\r
-  \r
-  @param  BufferSize\r
-  On input, a pointer to the length of the buffer. On output, the length \r
-  of the buffer that is required for the export data.\r
-  \r
-  @param  Buffer A pointer to a buffer that will contain the results of the export function.\r
-\r
-  @retval EFI_SUCCESS The buffer was successfully filled with BufferSize amount of data.\r
-  \r
-  @retval EFI_BUFFER_TOO_SMALL The value in BufferSize was too small to contain the export data.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_EXPORT) (\r
-  IN     EFI_HII_PROTOCOL *This,\r
-  IN     EFI_HII_HANDLE   Handle,\r
-  IN OUT UINTN            *BufferSize,\r
-  OUT    VOID             *Buffer\r
-  );\r
-\r
-/**\r
-  Remove any new strings that were added after the initial string export \r
-  for this handle.\r
-\r
-  @param  This A pointer to the EFI_HII_PROTOCOL instance.\r
-  \r
-  @param  Handle The handle on which the string resides.\r
-\r
-  @retval EFI_SUCCESS Remove strings from the handle successfully.\r
-  \r
-  @retval EFI_INVALID_PARAMETER The Handle was unknown.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_RESET_STRINGS) (\r
-  IN     EFI_HII_PROTOCOL   *This,\r
-  IN     EFI_HII_HANDLE     Handle\r
-  );\r
-\r
-/**\r
-  Tests if all of the characters in a string have corresponding font characters.\r
-\r
-  @param  This A pointer to the EFI_HII_PROTOCOL instance.\r
-  \r
-  @param  StringToTest A pointer to a Unicode string.\r
-  \r
-  @param  FirstMissing A pointer to an index into the string. On input, \r
-  the index of the first character in the StringToTest to examine. On exit, \r
-  the index of the first character encountered for which a glyph is unavailable.\r
-  If all glyphs in the string are available, the index is the index of the \r
-  terminator of the string.\r
-  \r
-  @param  GlyphBufferSize A pointer to a value. On output, if the function \r
-  returns EFI_SUCCESS, it contains the amount of memory that is required to \r
-  store the string's glyph equivalent.\r
-\r
-  @retval EFI_SUCCESS All glyphs are available. Note that an empty string \r
-  always returns this value.\r
-  \r
-  @retval EFI_NOT_FOUND A glyph was not found for a character.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_TEST_STRING) (\r
-  IN     EFI_HII_PROTOCOL  *This,\r
-  IN     CHAR16            *StringToTest,\r
-  IN OUT UINT32            *FirstMissing,\r
-  OUT    UINT32            *GlyphBufferSize\r
-  );\r
-\r
-/**\r
-  Translates a Unicode character into the corresponding font glyph.\r
-\r
-  @param  This A pointer to the EFI_HII_PROTOCOL instance.\r
-  \r
-  @param  Source A pointer to a Unicode string.\r
-  \r
-  @param  Index On input, the offset into the string from which to fetch \r
-  the character.On successful completion, the index is updated to the first \r
-  character past the character(s) making up the just extracted glyph. \r
-  \r
-  @param  GlyphBuffer Pointer to an array where the glyphs corresponding \r
-  to the characters in the source may be stored. GlyphBuffer is assumed \r
-  to be wide enough to accept a wide glyph character.\r
-  \r
-  @param  BitWidth If EFI_SUCCESS was returned, the UINT16 pointed to by \r
-  this value is filled with the length of the glyph in pixels. It is unchanged \r
-  if the call was unsuccessful.\r
-  \r
-  @param  InternalStatus The cell pointed to by this parameter must be \r
-  initialized to zero prior to invoking the call the first time for any string.\r
-\r
-  @retval EFI_SUCCESS It worked.\r
-  \r
-  @retval EFI_NOT_FOUND A glyph for a character was not found.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_GET_GLYPH) (\r
-  IN     EFI_HII_PROTOCOL  *This,\r
-  IN     CHAR16            *Source,\r
-  IN OUT UINT16            *Index,\r
-  OUT    UINT8             **GlyphBuffer,\r
-  OUT    UINT16            *BitWidth,\r
-  IN OUT UINT32            *InternalStatus\r
-  );\r
-\r
-/**\r
-  Translates a glyph into the format required for input to the Universal \r
-  Graphics Adapter (UGA) Block Transfer (BLT) routines.\r
-\r
-  @param  This A pointer to the EFI_HII_PROTOCOL instance.\r
-  \r
-  @param  GlyphBuffer A pointer to the buffer that contains glyph data.\r
-  \r
-  @param  Foreground The foreground setting requested to be used for the \r
-  generated BltBuffer data. \r
-  \r
-  @param  Background The background setting requested to be used for the \r
-  generated BltBuffer data.\r
-  \r
-  @param  Count The entry in the BltBuffer upon which to act.\r
-  \r
-  @param  Width The width in bits of the glyph being converted.\r
-  \r
-  @param  Height The height in bits of the glyph being converted\r
-  \r
-  @param  BltBuffer A pointer to the buffer that contains the data that is \r
-  ready to be used by the UGA BLT routines. \r
-\r
-  @retval EFI_SUCCESS It worked.\r
-  \r
-  @retval EFI_NOT_FOUND A glyph for a character was not found.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_GLYPH_TO_BLT) (\r
-  IN     EFI_HII_PROTOCOL   *This,\r
-  IN     UINT8              *GlyphBuffer,\r
-  IN     EFI_UGA_PIXEL      Foreground,\r
-  IN     EFI_UGA_PIXEL      Background,\r
-  IN     UINTN              Count,\r
-  IN     UINTN              Width,\r
-  IN     UINTN              Height,\r
-  IN OUT EFI_UGA_PIXEL      *BltBuffer\r
-  );\r
-\r
-/**\r
-  Allows a new string to be added to an already existing string package.\r
-\r
-  @param  This A pointer to the EFI_HII_PROTOCOL instance.\r
-  \r
-  @param  Pointer to a NULL-terminated string containing a single ISO 639-2 \r
-  language identifier, indicating the language in which the string is translated. \r
-  \r
-  @param  Handle The handle of the language pack to which the string is to be added.\r
-  \r
-  @param  Reference The identifier of the string to be added. If the reference \r
-  value is zero, then the string will be assigned a new identifier on that \r
-  handle for the language specified. Otherwise, the string will be updated \r
-  with the NewString Value. \r
-  \r
-  @param  NewString The string to be added.\r
-\r
-  @retval EFI_SUCCESS The string was effectively registered.\r
-  \r
-  @retval EFI_INVALID_PARAMETER The Handle was unknown.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_NEW_STRING) (\r
-  IN     EFI_HII_PROTOCOL      *This,\r
-  IN     CHAR16                *Language,\r
-  IN     EFI_HII_HANDLE        Handle,\r
-  IN OUT STRING_REF            *Reference,\r
-  IN     CHAR16                *NewString\r
-  );\r
-\r
-/**\r
-  Allows a program to determine the primary languages that are supported \r
-  on a given handle.\r
-\r
-  @param  This A pointer to the EFI_HII_PROTOCOL instance.\r
-  \r
-  @param  Handle The handle on which the strings reside.\r
-  \r
-  @param  LanguageString A string allocated by GetPrimaryLanguages() that \r
-  contains a list of all primary languages registered on the handle. \r
-\r
-  @retval EFI_SUCCESS LanguageString was correctly returned.\r
-  \r
-  @retval EFI_INVALID_PARAMETER The Handle was unknown.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_GET_PRI_LANGUAGES) (\r
-  IN  EFI_HII_PROTOCOL    *This,\r
-  IN  EFI_HII_HANDLE      Handle,\r
-  OUT EFI_STRING          *LanguageString\r
-  );\r
-\r
-/**\r
-  Allows a program to determine which secondary languages are supported \r
-  on a given handle for a given primary language.\r
-\r
-  @param  This A pointer to the EFI_HII_PROTOCOL instance.\r
-  \r
-  @param  Handle The handle on which the strings reside.\r
-  \r
-  @param  PrimaryLanguage Pointer to a NULL-terminated string containing a single \r
-  ISO 639-2 language identifier, indicating the primary language.\r
-  \r
-  @param  LanguageString A string allocated by GetSecondaryLanguages() \r
-  containing a list of all secondary languages registered on the handle.\r
-\r
-  @retval EFI_SUCCESS LanguageString was correctly returned.\r
-  \r
-  @retval EFI_INVALID_PARAMETER The Handle was unknown.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_GET_SEC_LANGUAGES) (\r
-  IN  EFI_HII_PROTOCOL    *This,\r
-  IN  EFI_HII_HANDLE      Handle,\r
-  IN  CHAR16              *PrimaryLanguage,\r
-  OUT EFI_STRING          *LanguageString\r
-  );\r
-\r
-/**\r
-  Extracts a string from a package already registered with the EFI HII database.\r
-\r
-  @param  This A pointer to the EFI_HII_PROTOCOL instance.\r
-  \r
-  @param  Handle The handle on which the string resides.\r
-  \r
-  @param  Token The string token assigned to the string.\r
-  \r
-  @param  Raw If TRUE, the string is returned unedited in the internal \r
-  storage format described above. If false, the string returned is edited \r
-  by replacing <cr> with <space> and by removing special characters such \r
-  as the <wide> prefix.\r
-  \r
-  @param  LanguageString Pointer to a NULL-terminated string containing a \r
-  single ISO 639-2 language identifier, indicating the language to print. \r
-  If the LanguageString is empty (starts with a NULL), the default system \r
-  language will be used to determine the language.\r
-  \r
-  @param  BufferLength Length of the StringBuffer.\r
-  \r
-  @param  StringBuffer The buffer designed to receive the characters in the string.\r
-\r
-  @retval EFI_SUCCESS StringBuffer is filled with a NULL-terminated string.\r
-  \r
-  @retval EFI_INVALID_PARAMETER The handle or string token is unknown.\r
-  \r
-  @retval EFI_BUFFER_TOO_SMALL The buffer provided was not large enough to \r
-  allow the entire string to be stored. \r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_GET_STRING) (\r
-  IN     EFI_HII_PROTOCOL  *This,\r
-  IN     EFI_HII_HANDLE    Handle,\r
-  IN     STRING_REF        Token,\r
-  IN     BOOLEAN           Raw,\r
-  IN     CHAR16            *LanguageString,\r
-  IN OUT UINTN             *BufferLength,\r
-  OUT    EFI_STRING        StringBuffer\r
-  );\r
-\r
-/**\r
-  Allows a program to extract a part of a string of not more than a given width. \r
-\r
-  @param  This A pointer to the EFI_HII_PROTOCOL instance.\r
-  \r
-  @param  Handle The handle on which the string resides.\r
-  \r
-  @param  Token The string token assigned to the string. \r
-  \r
-  @param  Index On input, the offset into the string where the line is to start.\r
-  On output, the index is updated to point to beyond the last character returned \r
-  in the call.\r
-  \r
-  @param  LineWidth The maximum width of the line in units of narrow glyphs.\r
-  \r
-  @param  LanguageString Pointer to a NULL-terminated string containing a \r
-  single ISO 639-2 language identifier, indicating the language to print.\r
-  \r
-  @param  BufferLength Pointer to the length of the StringBuffer. \r
-  \r
-  @param  StringBuffer The buffer designed to receive the characters in the string. \r
-\r
-  @retval EFI_SUCCESS StringBuffer filled with characters that will fit on the line.\r
-  \r
-  @retval EFI_NOT_FOUND The font glyph for at least one of the characters in \r
-  the string is not in the font database.\r
-  \r
-  @retval EFI_BUFFER_TOO_SMALL The buffer provided was not large enough \r
-  to allow the entire string to be stored.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_GET_LINE) (\r
-  IN     EFI_HII_PROTOCOL  *This,\r
-  IN     EFI_HII_HANDLE    Handle,\r
-  IN     STRING_REF        Token,\r
-  IN OUT UINT16            *Index,\r
-  IN     UINT16            LineWidth,\r
-  IN     CHAR16            *LanguageString,\r
-  IN OUT UINT16            *BufferLength,\r
-  OUT    EFI_STRING        StringBuffer\r
-  );\r
-\r
-/**\r
-  Allows a program to extract a form or form package that has previously \r
-  been registered with the HII database.\r
-\r
-  @param  This A pointer to the EFI_HII_PROTOCOL instance.\r
-  \r
-  @param  Handle Handle on which the form resides.\r
-  \r
-  @param  FormId The ID of the form to return. If the ID is zero, \r
-  the entire form package is returned. \r
-  \r
-  @param  BufferLength On input, the length of the Buffer. On output, \r
-  the length of the returned buffer, \r
-  \r
-  @param  Buffer The buffer designed to receive the form(s).\r
-\r
-  @retval EFI_SUCCESS Buffer filled with the requested forms. BufferLength \r
-  was updated.\r
-  \r
-  @retval EFI_INVALID_PARAMETER The handle is unknown.\r
-  \r
-  @retval EFI_NOT_FOUND A form on the requested handle cannot be found with \r
-  the requested FormId.\r
-  \r
-  @retval EFI_BUFFER_TOO_SMALL The buffer provided was not large enough \r
-  to allow the form to be stored. \r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_GET_FORMS) (\r
-  IN     EFI_HII_PROTOCOL  *This,\r
-  IN     EFI_HII_HANDLE    Handle,\r
-  IN     EFI_FORM_ID       FormId,\r
-  IN OUT UINTN             *BufferLength,\r
-  OUT    UINT8             *Buffer\r
-  );\r
-\r
-/**\r
-  Extracts the defaults that are associated with a given handle in the HII database.\r
-\r
-  @param  This A pointer to the EFI_HII_PROTOCOL instance.\r
-  \r
-  @param  Handle The HII handle from which will have default data retrieved.\r
-  \r
-  @param  DefaultMask The mask used to specify some type of default override when extracting \r
-  the default image data.\r
-  \r
-  @param  VariablePackList A indirect pointer to the first entry of a link list with \r
-  type EFI_HII_VARIABLE_PACK_LIST. \r
-\r
-  @retval EFI_SUCCESS The VariablePackList was populated with the appropriate \r
-  default setting data.\r
-  \r
-  @retval EFI_NOT_FOUND The IFR does not have any explicit or default map(s).\r
-  \r
-  @retval EFI_INVALID_PARAMETER The HII database entry associated with Handle \r
-  contain invalid data.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_GET_DEFAULT_IMAGE) (\r
-  IN     EFI_HII_PROTOCOL           *This,\r
-  IN     EFI_HII_HANDLE             Handle,\r
-  IN     UINTN                      DefaultMask,\r
-  OUT    EFI_HII_VARIABLE_PACK_LIST **VariablePackList\r
-  );\r
-\r
-/**\r
-  Allows the caller to update a form or form package that has previously been \r
-  registered with the EFI HII database.\r
-\r
-  @param  This A pointer to the EFI_HII_PROTOCOL instance.\r
-  \r
-  @param  Handle Handle of the package where the form to be updated resides.\r
-  \r
-  @param  Label The label inside the form package where the update is to take place.\r
-  \r
-  @param  AddData If TRUE, adding data at a given Label; otherwise, \r
-  if FALSE, removing data at a given Label.\r
-  \r
-  @param  Data The buffer containing the new tags to insert after the Label\r
-\r
-  @retval EFI_SUCCESS The form was updated with the new tags.\r
-  \r
-  @retval EFI_INVALID_PARAMETER The buffer for the buffer length does not \r
-  contain an integral number of tags.\r
-  \r
-  @retval EFI_NOT_FOUND The Handle, Label, or FormId was not found. \r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_UPDATE_FORM) (\r
-  IN EFI_HII_PROTOCOL     *This,\r
-  IN EFI_HII_HANDLE       Handle,\r
-  IN EFI_FORM_LABEL       Label,\r
-  IN BOOLEAN              AddData,\r
-  IN EFI_HII_UPDATE_DATA  *Data\r
-  );\r
-\r
-/**\r
-  Retrieves the current keyboard layout. \r
-\r
-  @param  This A pointer to the EFI_HII_PROTOCOL instance.\r
-  \r
-  @param  DescriptorCount A pointer to the number of Descriptor entries being \r
-  described in the keyboard layout being retrieved.\r
-  \r
-  @param  Descriptor A pointer to a buffer containing an array of EFI_KEY_DESCRIPTOR \r
-  entries. Each entry will reflect the definition of a specific physical key.\r
-\r
-  @retval EFI_SUCCESS The keyboard layout was retrieved successfully.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_GET_KEYBOARD_LAYOUT) (\r
-  IN     EFI_HII_PROTOCOL    *This,\r
-  OUT    UINT16              *DescriptorCount,\r
-  OUT    EFI_KEY_DESCRIPTOR  *Descriptor\r
-  );\r
-\r
-/**\r
-  @par Protocol Description:\r
-  The HII Protocol manages the HII database, which is a repository for data \r
-  having to do with fonts, strings, forms, keyboards, and other future human \r
-  interface items.\r
-\r
-  @param NewPack\r
-  Extracts the various packs from a package list.\r
-\r
-  @param RemovePack\r
-  Removes a package from the HII database.\r
-\r
-  @param FindHandles\r
-  Determines the handles that are currently active in the database.\r
-\r
-  @param ExportDatabase\r
-  Export the entire contents of the database to a buffer.\r
-\r
-  @param TestString\r
-  Tests if all of the characters in a string have corresponding font characters.\r
-\r
-  @param GetGlyph\r
-  Translates a Unicode character into the corresponding font glyph. \r
-\r
-  @param GlyphToBlt\r
-  Converts a glyph value into a format that is ready for a UGA BLT command. \r
-\r
-  @param NewString\r
-  Allows a new string to be added to an already existing string package.\r
-\r
-  @param GetPrimaryLanguages\r
-  Allows a program to determine the primary languages that are supported \r
-  on a given handle. \r
-\r
-  @param GetSecondaryLanguages\r
-  Allows a program to determine which secondary languages are supported \r
-  on a given handle for a given primary language.\r
-\r
-  @param GetString\r
-  Extracts a string from a package that is already registered with the \r
-  EFI HII database. \r
-\r
-  @param ResetString\r
-  Remove any new strings that were added after the initial string export \r
-  for this handle.\r
-\r
-  @param GetLine\r
-  Allows a program to extract a part of a string of not more than a given width.\r
-\r
-  @param GetForms\r
-  Allows a program to extract a form or form package that has been previously registered.\r
-\r
-  @param GetDefaultImage\r
-  Allows a program to extract the nonvolatile image that represents the default storage image. \r
-\r
-  @param UpdateForm\r
-  Allows a program to update a previously registered form. \r
-\r
-  @param GetKeyboardLayout\r
-  Allows a program to extract the current keyboard layout.\r
-\r
-**/\r
-struct _EFI_HII_PROTOCOL {\r
-  EFI_HII_NEW_PACK            NewPack;\r
-  EFI_HII_REMOVE_PACK         RemovePack;\r
-  EFI_HII_FIND_HANDLES        FindHandles;\r
-  EFI_HII_EXPORT              ExportDatabase;\r
-\r
-  EFI_HII_TEST_STRING         TestString;\r
-  EFI_HII_GET_GLYPH           GetGlyph;\r
-  EFI_HII_GLYPH_TO_BLT        GlyphToBlt;\r
-\r
-  EFI_HII_NEW_STRING          NewString;\r
-  EFI_HII_GET_PRI_LANGUAGES   GetPrimaryLanguages;\r
-  EFI_HII_GET_SEC_LANGUAGES   GetSecondaryLanguages;\r
-  EFI_HII_GET_STRING          GetString;\r
-  EFI_HII_RESET_STRINGS       ResetStrings;\r
-  EFI_HII_GET_LINE            GetLine;\r
-  EFI_HII_GET_FORMS           GetForms;\r
-  EFI_HII_GET_DEFAULT_IMAGE   GetDefaultImage;\r
-  EFI_HII_UPDATE_FORM         UpdateForm;\r
-\r
-  EFI_HII_GET_KEYBOARD_LAYOUT GetKeyboardLayout;\r
-};\r
-\r
-extern EFI_GUID gEfiHiiProtocolGuid;\r
-\r
-#endif\r
diff --git a/Source/C/Include/Protocol/UgaDraw.h b/Source/C/Include/Protocol/UgaDraw.h
deleted file mode 100644 (file)
index 5586bdf..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-/** @file\r
-  UGA Draw protocol from the EFI 1.1 specification.\r
-\r
-  Abstraction of a very simple graphics device.\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:  UgaDraw.h\r
-\r
-**/\r
-\r
-#ifndef __UGA_DRAW_H__\r
-#define __UGA_DRAW_H__\r
-\r
-#define EFI_UGA_DRAW_PROTOCOL_GUID \\r
-  { \\r
-    0x982c298b, 0xf4fa, 0x41cb, {0xb8, 0x38, 0x77, 0xaa, 0x68, 0x8f, 0xb8, 0x39 } \\r
-  }\r
-\r
-typedef struct _EFI_UGA_DRAW_PROTOCOL EFI_UGA_DRAW_PROTOCOL;\r
-\r
-/**\r
-  Return the current video mode information.\r
-\r
-  @param  This                  Protocol instance pointer.\r
-  @param  HorizontalResolution  Current video horizontal resolution in pixels\r
-  @param  VerticalResolution    Current video vertical resolution in pixels\r
-  @param  ColorDepth            Current video color depth in bits per pixel\r
-  @param  RefreshRate           Current video refresh rate in Hz.\r
-\r
-  @retval EFI_SUCCESS           Mode information returned.\r
-  @retval EFI_NOT_STARTED       Video display is not initialized. Call SetMode ()\r
-  @retval EFI_INVALID_PARAMETER One of the input args was NULL.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_UGA_DRAW_PROTOCOL_GET_MODE) (\r
-  IN  EFI_UGA_DRAW_PROTOCOL *This,\r
-  OUT UINT32                *HorizontalResolution,\r
-  OUT UINT32                *VerticalResolution,\r
-  OUT UINT32                *ColorDepth,\r
-  OUT UINT32                *RefreshRate\r
-  )\r
-;\r
-\r
-/**\r
-  Return the current video mode information.\r
-\r
-  @param  This                 Protocol instance pointer.\r
-  @param  HorizontalResolution Current video horizontal resolution in pixels\r
-  @param  VerticalResolution   Current video vertical resolution in pixels\r
-  @param  ColorDepth           Current video color depth in bits per pixel\r
-  @param  RefreshRate          Current video refresh rate in Hz.\r
-\r
-  @retval EFI_SUCCESS          Mode information returned.\r
-  @retval EFI_NOT_STARTED      Video display is not initialized. Call SetMode ()\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_UGA_DRAW_PROTOCOL_SET_MODE) (\r
-  IN  EFI_UGA_DRAW_PROTOCOL *This,\r
-  IN  UINT32                HorizontalResolution,\r
-  IN  UINT32                VerticalResolution,\r
-  IN  UINT32                ColorDepth,\r
-  IN  UINT32                RefreshRate\r
-  )\r
-;\r
-\r
-typedef struct {\r
-  UINT8 Blue;\r
-  UINT8 Green;\r
-  UINT8 Red;\r
-  UINT8 Reserved;\r
-} EFI_UGA_PIXEL;\r
-\r
-typedef union {\r
-  EFI_UGA_PIXEL Pixel;\r
-  UINT32        Raw;\r
-} EFI_UGA_PIXEL_UNION;\r
-\r
-typedef enum {\r
-  EfiUgaVideoFill,\r
-  EfiUgaVideoToBltBuffer,\r
-  EfiUgaBltBufferToVideo,\r
-  EfiUgaVideoToVideo,\r
-  EfiUgaBltMax\r
-} EFI_UGA_BLT_OPERATION;\r
-\r
-/**\r
-  Type specifying a pointer to a function to perform an UGA Blt operation.\r
-\r
-    The following table defines actions for BltOperations:\r
-\r
-    <B>EfiUgaVideoFill</B> - Write data from the  BltBuffer pixel (SourceX, SourceY) \r
-      directly to every pixel of the video display rectangle \r
-      (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height). \r
-      Only one pixel will be used from the BltBuffer. Delta is NOT used.\r
-\r
-    <B>EfiUgaVideoToBltBuffer</B> - Read data from the video display rectangle \r
-      (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in \r
-      the BltBuffer rectangle (DestinationX, DestinationY ) \r
-      (DestinationX + Width, DestinationY + Height). If DestinationX or \r
-      DestinationY is not zero then Delta must be set to the length in bytes \r
-      of a row in the BltBuffer.\r
-\r
-    <B>EfiUgaBltBufferToVideo</B> - Write data from the  BltBuffer rectangle \r
-      (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the \r
-      video display rectangle (DestinationX, DestinationY) \r
-      (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is \r
-      not zero then Delta must be set to the length in bytes of a row in the \r
-      BltBuffer.\r
-\r
-    <B>EfiUgaVideoToVideo</B> - Copy from the video display rectangle (SourceX, SourceY)\r
-     (SourceX + Width, SourceY + Height) .to the video display rectangle \r
-     (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height). \r
-     The BltBuffer and Delta  are not used in this mode.\r
-\r
-\r
-    @param[in] This          - Protocol instance pointer.\r
-    @param[in] BltBuffer     - Buffer containing data to blit into video buffer. This \r
-                               buffer has a size of Width*Height*sizeof(EFI_UGA_PIXEL)\r
-    @param[in] BltOperation  - Operation to perform on BlitBuffer and video memory\r
-    @param[in] SourceX       - X coordinate of source for the BltBuffer.\r
-    @param[in] SourceY       - Y coordinate of source for the BltBuffer.\r
-    @param[in] DestinationX  - X coordinate of destination for the BltBuffer.\r
-    @param[in] DestinationY  - Y coordinate of destination for the BltBuffer.\r
-    @param[in] Width         - Width of rectangle in BltBuffer in pixels.\r
-    @param[in] Height        - Hight of rectangle in BltBuffer in pixels.\r
-    @param[in] Delta         - OPTIONAL\r
-  \r
-    @retval EFI_SUCCESS           - The Blt operation completed.\r
-    @retval EFI_INVALID_PARAMETER - BltOperation is not valid.\r
-    @retval EFI_DEVICE_ERROR      - A hardware error occured writting to the video buffer.\r
-\r
---*/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_UGA_DRAW_PROTOCOL_BLT) (\r
-  IN  EFI_UGA_DRAW_PROTOCOL                   * This,\r
-  IN  EFI_UGA_PIXEL                           * BltBuffer, OPTIONAL\r
-  IN  EFI_UGA_BLT_OPERATION                   BltOperation,\r
-  IN  UINTN                                   SourceX,\r
-  IN  UINTN                                   SourceY,\r
-  IN  UINTN                                   DestinationX,\r
-  IN  UINTN                                   DestinationY,\r
-  IN  UINTN                                   Width,\r
-  IN  UINTN                                   Height,\r
-  IN  UINTN                                   Delta         OPTIONAL\r
-  );\r
-\r
-struct _EFI_UGA_DRAW_PROTOCOL {\r
-  EFI_UGA_DRAW_PROTOCOL_GET_MODE  GetMode;\r
-  EFI_UGA_DRAW_PROTOCOL_SET_MODE  SetMode;\r
-  EFI_UGA_DRAW_PROTOCOL_BLT       Blt;\r
-};\r
-\r
-extern EFI_GUID gEfiUgaDrawProtocolGuid;\r
-\r
-#endif\r
index 8becfc5..e86434b 100644 (file)
@@ -42,7 +42,7 @@ AR = lib.exe
 LD = link.exe
 LINKER = $(LD)
 
-INC = -I . -I $(SOURCE_PATH)\Include -I $(SOURCE_PATH)\Include\Common -I $(SOURCE_PATH)\Include\IndustryStandard -I $(ARCH_INCLUDE) -I $(SOURCE_PATH)\Common
+INC = -I . -I $(SOURCE_PATH)\Include -I $(ARCH_INCLUDE) -I $(SOURCE_PATH)\Common
 
 CFLAGS = $(CFLAGS) /nologo /c /Zi /Od /GZ /D_DEBUG $(INC)
 CPPFLAGS = $(CPPFLAGS) /EHsc $(CFLAGS)
index d607dbb..e2a45a7 100644 (file)
@@ -3,7 +3,7 @@ ARCH = IA32
 !INCLUDE MSmakefile.common
 
 LIBRARIES = Common PeCoffLoader String
-APPLICATIONS = GenFw GenSec GenFv GenFfs GenVtf EfiRom TianoCompress
+APPLICATIONS = GenFw GenSec GenFv GenFfs GenVtf EfiRom TianoCompress Split
 
 all: libs apps install
 
index e60bcdb..fe48df0 100644 (file)
@@ -22,7 +22,7 @@ Revision History
 --*/\r
 \r
 #include <Common/UefiBaseTypes.h>\r
-#include <Common/EfiImage.h>\r
+#include <IndustryStandard/PeImage.h>\r
 #include <Library/PeCoffLib.h>\r
 \r
 typedef union {\r
index 99e7c93..ea21e1d 100644 (file)
@@ -22,7 +22,7 @@ Revision History
 --*/\r
 \r
 #include <Common/UefiBaseTypes.h>\r
-#include <Common/EfiImage.h>\r
+#include <IndustryStandard/PeImage.h>\r
 #include <Library/PeCoffLib.h>\r
 \r
 #define EXT_IMM64(Value, Address, Size, InstPos, ValPos)  \\r