]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Renaming files/directories
authorbxing <bxing@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 4 Jul 2007 11:42:03 +0000 (11:42 +0000)
committerbxing <bxing@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 4 Jul 2007 11:42:03 +0000 (11:42 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3050 6f19259b-4bc3-4df7-8a09-765794883524

21 files changed:
IntelFrameworkPkg/Include/Common/DataHubRecords.h [deleted file]
IntelFrameworkPkg/Include/Common/FrameworkDxeCis.h [deleted file]
IntelFrameworkPkg/Include/Common/FrameworkFirmwareFileSystem.h [deleted file]
IntelFrameworkPkg/Include/Common/FrameworkFirmwareVolumeHeader.h [deleted file]
IntelFrameworkPkg/Include/Common/FrameworkFirmwareVolumeImageFormat.h [deleted file]
IntelFrameworkPkg/Include/Common/FrameworkHob.h [deleted file]
IntelFrameworkPkg/Include/Common/FrameworkLegacy16.h [deleted file]
IntelFrameworkPkg/Include/Common/FrameworkSmmCis.h [deleted file]
IntelFrameworkPkg/Include/Common/FrameworkStatusCode.h [deleted file]
IntelFrameworkPkg/Include/Common/FrameworkStatusCodeDataTypeId.h [deleted file]
IntelFrameworkPkg/Include/Framework/DataHubRecords.h [new file with mode: 0644]
IntelFrameworkPkg/Include/Framework/FrameworkDxeCis.h [new file with mode: 0644]
IntelFrameworkPkg/Include/Framework/FrameworkFirmwareFileSystem.h [new file with mode: 0644]
IntelFrameworkPkg/Include/Framework/FrameworkFirmwareVolumeHeader.h [new file with mode: 0644]
IntelFrameworkPkg/Include/Framework/FrameworkFirmwareVolumeImageFormat.h [new file with mode: 0644]
IntelFrameworkPkg/Include/Framework/FrameworkHob.h [new file with mode: 0644]
IntelFrameworkPkg/Include/Framework/FrameworkLegacy16.h [new file with mode: 0644]
IntelFrameworkPkg/Include/Framework/FrameworkSmmCis.h [new file with mode: 0644]
IntelFrameworkPkg/Include/Framework/FrameworkStatusCode.h [new file with mode: 0644]
IntelFrameworkPkg/Include/Framework/FrameworkStatusCodeDataTypeId.h [new file with mode: 0644]
IntelFrameworkPkg/Include/Ppi/DeviceRecoveryModule.h [new file with mode: 0644]

diff --git a/IntelFrameworkPkg/Include/Common/DataHubRecords.h b/IntelFrameworkPkg/Include/Common/DataHubRecords.h
deleted file mode 100644 (file)
index cd7fe97..0000000
+++ /dev/null
@@ -1,1917 +0,0 @@
-/** @file\r
-  This file defines GUIDs and associated data structures for records posted to the Data Hub.\r
-  The producers of these records use these definitions to construct records.\r
-  The consumers of these records use these definitions to retrieve, filter and parse records.\r
-\r
-  Copyright (c) 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
-  Module Name:  DataHubRecords.h\r
-\r
-  @par Revision Reference:\r
-  DataHubRecord.h include all data hub sub class defitions from Cache subclass\r
-  spec 0.9, DataHub SubClass spec 0.9, Memory SubClass Spec 0.9, Processor\r
-  Subclass spec 0.9,Misc SubClass spec 0.9.\r
-\r
-**/\r
-\r
-#ifndef _DATAHUB_RECORDS_H_\r
-#define _DATAHUB_RECORDS_H_\r
-\r
-#include <PiPei.h>\r
-#include <Protocol/DevicePath.h>\r
-\r
-#define EFI_PROCESSOR_SUBCLASS_VERSION    0x00010000\r
-\r
-#include <Protocol/DevicePath.h>\r
-\r
-#pragma pack(1)\r
-\r
-typedef struct _USB_PORT_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH           PciBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
-} USB_PORT_DEVICE_PATH;\r
-\r
-//\r
-// IDE\r
-//\r
-typedef struct _IDE_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH           PciBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
-} IDE_DEVICE_PATH;\r
-\r
-//\r
-// RMC Connector\r
-//\r
-typedef struct _RMC_CONN_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH           PciBridgeDevicePath;\r
-  PCI_DEVICE_PATH           PciBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
-} RMC_CONN_DEVICE_PATH;\r
-\r
-//\r
-// RIDE\r
-//\r
-typedef struct _RIDE_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH           PciBridgeDevicePath;\r
-  PCI_DEVICE_PATH           PciBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
-} RIDE_DEVICE_PATH;\r
-\r
-//\r
-// Gigabit NIC\r
-//\r
-typedef struct _GB_NIC_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH           PciBridgeDevicePath;\r
-  PCI_DEVICE_PATH           PciXBridgeDevicePath;\r
-  PCI_DEVICE_PATH           PciXBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
-} GB_NIC_DEVICE_PATH;\r
-\r
-//\r
-// P/S2 Connector\r
-//\r
-typedef struct _PS2_CONN_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH           LpcBridgeDevicePath;\r
-  ACPI_HID_DEVICE_PATH      LpcBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
-} PS2_CONN_DEVICE_PATH;\r
-\r
-//\r
-// Serial Port Connector\r
-//\r
-typedef struct _SERIAL_CONN_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH           LpcBridgeDevicePath;\r
-  ACPI_HID_DEVICE_PATH      LpcBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
-} SERIAL_CONN_DEVICE_PATH;\r
-\r
-//\r
-// Parallel Port Connector\r
-//\r
-typedef struct _PARALLEL_CONN_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH           LpcBridgeDevicePath;\r
-  ACPI_HID_DEVICE_PATH      LpcBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
-} PARALLEL_CONN_DEVICE_PATH;\r
-\r
-//\r
-// Floopy Connector\r
-//\r
-typedef struct _FLOOPY_CONN_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH           LpcBridgeDevicePath;\r
-  ACPI_HID_DEVICE_PATH      LpcBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
-} FLOOPY_CONN_DEVICE_PATH;\r
-\r
-typedef union _EFI_MISC_PORT_DEVICE_PATH {\r
-  USB_PORT_DEVICE_PATH      UsbDevicePath;\r
-  IDE_DEVICE_PATH           IdeDevicePath;\r
-  RMC_CONN_DEVICE_PATH      RmcConnDevicePath;\r
-  RIDE_DEVICE_PATH          RideDevicePath;\r
-  GB_NIC_DEVICE_PATH        GbNicDevicePath;\r
-  PS2_CONN_DEVICE_PATH      Ps2ConnDevicePath;\r
-  SERIAL_CONN_DEVICE_PATH   SerialConnDevicePath;\r
-  PARALLEL_CONN_DEVICE_PATH ParallelConnDevicePath;\r
-  FLOOPY_CONN_DEVICE_PATH   FloppyConnDevicePath;\r
-} EFI_MISC_PORT_DEVICE_PATH;\r
-\r
-#pragma pack()\r
-\r
-//\r
-// String Token Definition\r
-//\r
-#define EFI_STRING_TOKEN    UINT16\r
-\r
-typedef struct {\r
-  UINT32    Version;\r
-  UINT32    HeaderSize;\r
-  UINT16    Instance;\r
-  UINT16    SubInstance;\r
-  UINT32    RecordType;\r
-} EFI_SUBCLASS_TYPE1_HEADER;\r
-\r
-typedef struct {\r
-  EFI_GUID    ProducerName;\r
-  UINT16      Instance;\r
-  UINT16      SubInstance;\r
-} EFI_INTER_LINK_DATA;\r
-\r
-\r
-//\r
-// EXP data\r
-//\r
-\r
-typedef struct {\r
-  UINT16    Value;\r
-  UINT16    Exponent;\r
-} EFI_EXP_BASE2_DATA;\r
-\r
-\r
-typedef struct {\r
-  UINT16    Value;\r
-  UINT16    Exponent;\r
-} EFI_EXP_BASE10_DATA;\r
-\r
-typedef EFI_EXP_BASE10_DATA   EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA;\r
-\r
-typedef EFI_EXP_BASE10_DATA   EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA;\r
-\r
-typedef EFI_EXP_BASE10_DATA   EFI_PROCESSOR_CORE_FREQUENCY_DATA;\r
-\r
-typedef EFI_EXP_BASE10_DATA  *EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA;\r
-\r
-typedef EFI_EXP_BASE10_DATA  *EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA;\r
-\r
-typedef EFI_EXP_BASE10_DATA   EFI_PROCESSOR_FSB_FREQUENCY_DATA;\r
-\r
-typedef STRING_REF            EFI_PROCESSOR_VERSION_DATA;\r
-\r
-typedef STRING_REF            EFI_PROCESSOR_MANUFACTURER_DATA;\r
-\r
-typedef STRING_REF            EFI_PROCESSOR_SERIAL_NUMBER_DATA;\r
-\r
-typedef STRING_REF            EFI_PROCESSOR_ASSET_TAG_DATA;\r
-\r
-typedef struct {\r
-  UINT32  ProcessorSteppingId:4;\r
-  UINT32  ProcessorModel:     4;\r
-  UINT32  ProcessorFamily:    4;\r
-  UINT32  ProcessorType:      2;\r
-  UINT32  ProcessorReserved1: 2;\r
-  UINT32  ProcessorXModel:    4;\r
-  UINT32  ProcessorXFamily:   8;\r
-  UINT32  ProcessorReserved2: 4;\r
-} EFI_PROCESSOR_SIGNATURE;\r
-\r
-typedef struct {\r
-  UINT32  ProcessorBrandIndex :8;\r
-  UINT32  ProcessorClflush    :8;\r
-  UINT32  ProcessorReserved   :8;\r
-  UINT32  ProcessorDfltApicId :8;\r
-} EFI_PROCESSOR_MISC_INFO;\r
-\r
-typedef struct {\r
-  UINT32  ProcessorFpu:       1;\r
-  UINT32  ProcessorVme:       1;\r
-  UINT32  ProcessorDe:        1;\r
-  UINT32  ProcessorPse:       1;\r
-  UINT32  ProcessorTsc:       1;\r
-  UINT32  ProcessorMsr:       1;\r
-  UINT32  ProcessorPae:       1;\r
-  UINT32  ProcessorMce:       1;\r
-  UINT32  ProcessorCx8:       1;\r
-  UINT32  ProcessorApic:      1;\r
-  UINT32  ProcessorReserved1: 1;\r
-  UINT32  ProcessorSep:       1;\r
-  UINT32  ProcessorMtrr:      1;\r
-  UINT32  ProcessorPge:       1;\r
-  UINT32  ProcessorMca:       1;\r
-  UINT32  ProcessorCmov:      1;\r
-  UINT32  ProcessorPat:       1;\r
-  UINT32  ProcessorPse36:     1;\r
-  UINT32  ProcessorPsn:       1;\r
-  UINT32  ProcessorClfsh:     1;\r
-  UINT32  ProcessorReserved2: 1;\r
-  UINT32  ProcessorDs:        1;\r
-  UINT32  ProcessorAcpi:      1;\r
-  UINT32  ProcessorMmx:       1;\r
-  UINT32  ProcessorFxsr:      1;\r
-  UINT32  ProcessorSse:       1;\r
-  UINT32  ProcessorSse2:      1;\r
-  UINT32  ProcessorSs:        1;\r
-  UINT32  ProcessorReserved3: 1;\r
-  UINT32  ProcessorTm:        1;\r
-  UINT32  ProcessorReserved4: 2;\r
-} EFI_PROCESSOR_FEATURE_FLAGS;\r
-\r
-typedef struct {\r
-  EFI_PROCESSOR_SIGNATURE     Signature;\r
-  EFI_PROCESSOR_MISC_INFO     MiscInfo;\r
-  UINT32                      Reserved;\r
-  EFI_PROCESSOR_FEATURE_FLAGS FeatureFlags;\r
-} EFI_PROCESSOR_ID_DATA;\r
-\r
-typedef enum {\r
-  EfiProcessorOther    = 1,\r
-  EfiProcessorUnknown  = 2,\r
-  EfiCentralProcessor  = 3,\r
-  EfiMathProcessor     = 4,\r
-  EfiDspProcessor      = 5,\r
-  EfiVideoProcessor    = 6\r
-} EFI_PROCESSOR_TYPE_DATA;\r
-\r
-typedef enum {\r
-  EfiProcessorFamilyOther               = 1,\r
-  EfiProcessorFamilyUnknown             = 2,\r
-  EfiProcessorFamily8086                = 3,\r
-  EfiProcessorFamily80286               = 4,\r
-  EfiProcessorFamilyIntel386            = 5,\r
-  EfiProcessorFamilyIntel486            = 6,\r
-  EfiProcessorFamily8087                = 7,\r
-  EfiProcessorFamily80287               = 8,\r
-  EfiProcessorFamily80387               = 9,\r
-  EfiProcessorFamily80487               = 0x0A,\r
-  EfiProcessorFamilyPentium             = 0x0B,\r
-  EfiProcessorFamilyPentiumPro          = 0x0C,\r
-  EfiProcessorFamilyPentiumII           = 0x0D,\r
-  EfiProcessorFamilyPentiumMMX          = 0x0E,\r
-  EfiProcessorFamilyCeleron             = 0x0F,\r
-  EfiProcessorFamilyPentiumIIXeon       = 0x10,\r
-  EfiProcessorFamilyPentiumIII          = 0x11,\r
-  EfiProcessorFamilyM1                  = 0x12,\r
-  EfiProcessorFamilyM1Reserved1         = 0x13,\r
-  EfiProcessorFamilyM1Reserved2         = 0x14,\r
-  EfiProcessorFamilyM1Reserved3         = 0x15,\r
-  EfiProcessorFamilyM1Reserved4         = 0x16,\r
-  EfiProcessorFamilyM1Reserved5         = 0x17,\r
-  EfiProcessorFamilyM1Reserved6         = 0x18,\r
-  EfiProcessorFamilyK5                  = 0x19,\r
-  EfiProcessorFamilyK5Reserved1         = 0x1A,\r
-  EfiProcessorFamilyK5Reserved2         = 0x1B,\r
-  EfiProcessorFamilyK5Reserved3         = 0x1C,\r
-  EfiProcessorFamilyK5Reserved4         = 0x1D,\r
-  EfiProcessorFamilyK5Reserved5         = 0x1E,\r
-  EfiProcessorFamilyK5Reserved6         = 0x1F,\r
-  EfiProcessorFamilyPowerPC             = 0x20,\r
-  EfiProcessorFamilyPowerPC601          = 0x21,\r
-  EfiProcessorFamilyPowerPC603          = 0x22,\r
-  EfiProcessorFamilyPowerPC603Plus      = 0x23,\r
-  EfiProcessorFamilyPowerPC604          = 0x24,\r
-  EfiProcessorFamilyAlpha2              = 0x30,\r
-  EfiProcessorFamilyMips                = 0x40,\r
-  EfiProcessorFamilySparc               = 0x50,\r
-  EfiProcessorFamily68040               = 0x60,\r
-  EfiProcessorFamily68xxx               = 0x61,\r
-  EfiProcessorFamily68000               = 0x62,\r
-  EfiProcessorFamily68010               = 0x63,\r
-  EfiProcessorFamily68020               = 0x64,\r
-  EfiProcessorFamily68030               = 0x65,\r
-  EfiProcessorFamilyHobbit              = 0x70,\r
-  EfiProcessorFamilyWeitek              = 0x80,\r
-  EfiProcessorFamilyPARISC              = 0x90,\r
-  EfiProcessorFamilyV30                 = 0xA0,\r
-  EfiProcessorFamilyPentiumIIIXeon      = 0xB0,\r
-  EfiProcessorFamilyPentiumIIISpeedStep = 0xB1,\r
-  EfiProcessorFamilyPentium4            = 0xB2,\r
-  EfiProcessorFamilyIntelXeon           = 0xB3,\r
-  EfiProcessorFamilyAS400               = 0xB4,\r
-  EfiProcessorFamilyIntelXeonMP         = 0xB5,\r
-  EfiProcessorFamilyAMDAthlonXP         = 0xB6,\r
-  EfiProcessorFamilyAMDAthlonMP         = 0xB7,\r
-  EfiProcessorFamilyIntelPentiumM       = 0xB9,\r
-  EfiProcessorFamilyIntelCeleronD       = 0xBA,\r
-  EfiProcessorFamilyIntelPentiumD       = 0xBB,\r
-  EfiProcessorFamilyIntelPentiumEx      = 0xBC,\r
-  EfiProcessorFamilyIBM390              = 0xC8,\r
-  EfiProcessorFamilyG4                  = 0xC9,\r
-  EfiProcessorFamilyG5                  = 0xCA,\r
-  EfiProcessorFamilyi860                = 0xFA,\r
-  EfiProcessorFamilyi960                = 0xFB\r
-} EFI_PROCESSOR_FAMILY_DATA;\r
-\r
-typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_VOLTAGE_DATA;\r
-\r
-typedef EFI_PHYSICAL_ADDRESS EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA;\r
-\r
-typedef UINT32 EFI_PROCESSOR_APIC_ID_DATA;\r
-\r
-typedef UINT32 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA;\r
-\r
-typedef enum {\r
-  EfiProcessorIa32Microcode    = 1,\r
-  EfiProcessorIpfPalAMicrocode = 2,\r
-  EfiProcessorIpfPalBMicrocode = 3\r
-} EFI_PROCESSOR_MICROCODE_TYPE;\r
-\r
-typedef struct {\r
-  EFI_PROCESSOR_MICROCODE_TYPE  ProcessorMicrocodeType;\r
-  UINT32                        ProcessorMicrocodeRevisionNumber;\r
-} EFI_PROCESSOR_MICROCODE_REVISION_DATA;\r
-\r
-typedef struct {\r
-  UINT32      CpuStatus                 :3;\r
-  UINT32      Reserved1                 :3;\r
-  UINT32      SocketPopulated           :1;\r
-  UINT32      Reserved2                 :1;\r
-  UINT32      ApicEnable                :1;\r
-  UINT32      BootApplicationProcessor  :1;\r
-  UINT32      Reserved3                 :22;\r
-} EFI_PROCESSOR_STATUS_DATA;\r
-\r
-typedef enum {\r
-  EfiCpuStatusUnknown        = 0,\r
-  EfiCpuStatusEnabled        = 1,\r
-  EfiCpuStatusDisabledByUser = 2,\r
-  EfiCpuStatusDisabledbyBios = 3,\r
-  EfiCpuStatusIdle           = 4,\r
-  EfiCpuStatusOther          = 7\r
-} EFI_CPU_STATUS;\r
-\r
-typedef enum {\r
-  EfiProcessorSocketOther            = 1,\r
-  EfiProcessorSocketUnknown          = 2,\r
-  EfiProcessorSocketDaughterBoard    = 3,\r
-  EfiProcessorSocketZIF              = 4,\r
-  EfiProcessorSocketReplacePiggyBack = 5,\r
-  EfiProcessorSocketNone             = 6,\r
-  EfiProcessorSocketLIF              = 7,\r
-  EfiProcessorSocketSlot1            = 8,\r
-  EfiProcessorSocketSlot2            = 9,\r
-  EfiProcessorSocket370Pin           = 0xA,\r
-  EfiProcessorSocketSlotA            = 0xB,\r
-  EfiProcessorSocketSlotM            = 0xC,\r
-  EfiProcessorSocket423              = 0xD,\r
-  EfiProcessorSocketA462             = 0xE,\r
-  EfiProcessorSocket478              = 0xF,\r
-  EfiProcessorSocket754              = 0x10,\r
-  EfiProcessorSocket940              = 0x11,\r
-  EfiProcessorSocket939              = 0x12,\r
-  EfiProcessorSocketmPGA604          = 0x13,\r
-  EfiProcessorSocketLGA771           = 0x14,\r
-  EfiProcessorSocketLGA775           = 0x15\r
-\r
-} EFI_PROCESSOR_SOCKET_TYPE_DATA;\r
-\r
-typedef STRING_REF EFI_PROCESSOR_SOCKET_NAME_DATA;\r
-\r
-typedef EFI_INTER_LINK_DATA EFI_CACHE_ASSOCIATION_DATA;\r
-\r
-typedef enum {\r
-  EfiProcessorHealthy        = 1,\r
-  EfiProcessorPerfRestricted = 2,\r
-  EfiProcessorFuncRestricted = 3\r
-} EFI_PROCESSOR_HEALTH_STATUS;\r
-\r
-typedef UINTN   EFI_PROCESSOR_PACKAGE_NUMBER_DATA;\r
-\r
-\r
-typedef enum {\r
-  ProcessorCoreFrequencyRecordType     = 1,\r
-  ProcessorFsbFrequencyRecordType      = 2,\r
-  ProcessorVersionRecordType           = 3,\r
-  ProcessorManufacturerRecordType      = 4,\r
-  ProcessorSerialNumberRecordType      = 5,\r
-  ProcessorIdRecordType                = 6,\r
-  ProcessorTypeRecordType              = 7,\r
-  ProcessorFamilyRecordType            = 8,\r
-  ProcessorVoltageRecordType           = 9,\r
-  ProcessorApicBaseAddressRecordType   = 10,\r
-  ProcessorApicIdRecordType            = 11,\r
-  ProcessorApicVersionNumberRecordType = 12,\r
-  CpuUcodeRevisionDataRecordType       = 13,\r
-  ProcessorStatusRecordType            = 14,\r
-  ProcessorSocketTypeRecordType        = 15,\r
-  ProcessorSocketNameRecordType        = 16,\r
-  CacheAssociationRecordType           = 17,\r
-  ProcessorMaxCoreFrequencyRecordType  = 18,\r
-  ProcessorAssetTagRecordType          = 19,\r
-  ProcessorMaxFsbFrequencyRecordType   = 20,\r
-  ProcessorPackageNumberRecordType     = 21,\r
-  ProcessorCoreFrequencyListRecordType = 22,\r
-  ProcessorFsbFrequencyListRecordType  = 23,\r
-  ProcessorHealthStatusRecordType      = 24\r
-} EFI_CPU_VARIABLE_RECORD_TYPE;\r
-\r
-typedef union {\r
-  EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA  ProcessorCoreFrequencyList;\r
-  EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA   ProcessorFsbFrequencyList;\r
-  EFI_PROCESSOR_SERIAL_NUMBER_DATA        ProcessorSerialNumber;\r
-  EFI_PROCESSOR_CORE_FREQUENCY_DATA       ProcessorCoreFrequency;\r
-  EFI_PROCESSOR_FSB_FREQUENCY_DATA        ProcessorFsbFrequency;\r
-  EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA   ProcessorMaxCoreFrequency;\r
-  EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA    ProcessorMaxFsbFrequency;\r
-  EFI_PROCESSOR_VERSION_DATA              ProcessorVersion;\r
-  EFI_PROCESSOR_MANUFACTURER_DATA         ProcessorManufacturer;\r
-  EFI_PROCESSOR_ID_DATA                   ProcessorId;\r
-  EFI_PROCESSOR_TYPE_DATA                 ProcessorType;\r
-  EFI_PROCESSOR_FAMILY_DATA               ProcessorFamily;\r
-  EFI_PROCESSOR_VOLTAGE_DATA              ProcessorVoltage;\r
-  EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA    ProcessorApicBase;\r
-  EFI_PROCESSOR_APIC_ID_DATA              ProcessorApicId;\r
-  EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA  ProcessorApicVersionNumber;\r
-  EFI_PROCESSOR_MICROCODE_REVISION_DATA   CpuUcodeRevisionData;\r
-  EFI_PROCESSOR_STATUS_DATA               ProcessorStatus;\r
-  EFI_PROCESSOR_SOCKET_TYPE_DATA          ProcessorSocketType;\r
-  EFI_PROCESSOR_SOCKET_NAME_DATA          ProcessorSocketName;\r
-  EFI_PROCESSOR_ASSET_TAG_DATA            ProcessorAssetTag;\r
-  EFI_PROCESSOR_HEALTH_STATUS             ProcessorHealthStatus;\r
-  EFI_PROCESSOR_PACKAGE_NUMBER_DATA       ProcessorPackageNumber;\r
-} EFI_CPU_VARIABLE_RECORD;\r
-\r
-typedef struct {\r
-  EFI_SUBCLASS_TYPE1_HEADER      DataRecordHeader;\r
-  EFI_CPU_VARIABLE_RECORD        VariableRecord;\r
-} EFI_CPU_DATA_RECORD;\r
-\r
-#define EFI_CACHE_SUBCLASS_VERSION    0x00010000\r
-\r
-\r
-typedef EFI_EXP_BASE2_DATA  EFI_CACHE_SIZE_DATA;\r
-\r
-typedef EFI_EXP_BASE2_DATA  EFI_MAXIMUM_CACHE_SIZE_DATA;\r
-\r
-typedef EFI_EXP_BASE10_DATA EFI_CACHE_SPEED_DATA;\r
-\r
-typedef STRING_REF          EFI_CACHE_SOCKET_DATA;\r
-\r
-typedef struct {\r
-  UINT32  Other         :1;\r
-  UINT32  Unknown       :1;\r
-  UINT32  NonBurst      :1;\r
-  UINT32  Burst         :1;\r
-  UINT32  PipelineBurst :1;\r
-  UINT32  Asynchronous  :1;\r
-  UINT32  Synchronous   :1;\r
-  UINT32  Reserved      :25;\r
-} EFI_CACHE_SRAM_TYPE_DATA;\r
-\r
-typedef enum {\r
-  EfiCacheErrorOther     = 1,\r
-  EfiCacheErrorUnknown   = 2,\r
-  EfiCacheErrorNone      = 3,\r
-  EfiCacheErrorParity    = 4,\r
-  EfiCacheErrorSingleBit = 5,\r
-  EfiCacheErrorMultiBit  = 6\r
-} EFI_CACHE_ERROR_TYPE_DATA;\r
-\r
-typedef enum {\r
-  EfiCacheTypeOther       = 1,\r
-  EfiCacheTypeUnknown     = 2,\r
-  EfiCacheTypeInstruction = 3,\r
-  EfiCacheTypeData        = 4,\r
-  EfiCacheTypeUnified     = 5\r
-} EFI_CACHE_TYPE_DATA;\r
-\r
-typedef enum {\r
-  EfiCacheAssociativityOther        = 1,\r
-  EfiCacheAssociativityUnknown      = 2,\r
-  EfiCacheAssociativityDirectMapped = 3,\r
-  EfiCacheAssociativity2Way         = 4,\r
-  EfiCacheAssociativity4Way         = 5,\r
-  EfiCacheAssociativityFully        = 6,\r
-  EfiCacheAssociativity8Way         = 7,\r
-  EfiCacheAssociativity16Way        = 8\r
-} EFI_CACHE_ASSOCIATIVITY_DATA;\r
-\r
-typedef struct {\r
-  UINT32    Level           :3;\r
-  UINT32    Socketed        :1;\r
-  UINT32    Reserved2       :1;\r
-  UINT32    Location        :2;\r
-  UINT32    Enable          :1;\r
-  UINT32    OperationalMode :2;\r
-  UINT32    Reserved1       :22;\r
-} EFI_CACHE_CONFIGURATION_DATA;\r
-\r
-#define EFI_CACHE_L1      1\r
-#define EFI_CACHE_L2      2\r
-#define EFI_CACHE_L3      3\r
-#define EFI_CACHE_L4      4\r
-#define EFI_CACHE_LMAX    EFI_CACHE_L4\r
-\r
-#define EFI_CACHE_SOCKETED      1\r
-#define EFI_CACHE_NOT_SOCKETED  0\r
-\r
-typedef enum {\r
-  EfiCacheInternal = 0,\r
-  EfiCacheExternal = 1,\r
-  EfiCacheReserved = 2,\r
-  EfiCacheUnknown  = 3\r
-} EFI_CACHE_LOCATION;\r
-\r
-#define EFI_CACHE_ENABLED    1\r
-#define EFI_CACHE_DISABLED   0\r
-\r
-typedef enum {\r
-  EfiCacheWriteThrough = 0,\r
-  EfiCacheWriteBack    = 1,\r
-  EfiCacheDynamicMode  = 2,\r
-  EfiCacheUnknownMode  = 3\r
-} EFI_CACHE_OPERATIONAL_MODE;\r
-\r
-\r
-\r
-typedef enum {\r
-  CacheSizeRecordType              = 1,\r
-  MaximumSizeCacheRecordType       = 2,\r
-  CacheSpeedRecordType             = 3,\r
-  CacheSocketRecordType            = 4,\r
-  CacheSramTypeRecordType          = 5,\r
-  CacheInstalledSramTypeRecordType = 6,\r
-  CacheErrorTypeRecordType         = 7,\r
-  CacheTypeRecordType              = 8,\r
-  CacheAssociativityRecordType     = 9,\r
-  CacheConfigRecordType            = 10\r
-} EFI_CACHE_VARIABLE_RECORD_TYPE;\r
-\r
-\r
-typedef union {\r
-  EFI_CACHE_SIZE_DATA             CacheSize;\r
-  EFI_MAXIMUM_CACHE_SIZE_DATA     MaximumCacheSize;\r
-  EFI_CACHE_SPEED_DATA            CacheSpeed;\r
-  EFI_CACHE_SOCKET_DATA           CacheSocket;\r
-  EFI_CACHE_SRAM_TYPE_DATA        CacheSramType;\r
-  EFI_CACHE_SRAM_TYPE_DATA        CacheInstalledSramType;\r
-  EFI_CACHE_ERROR_TYPE_DATA       CacheErrorType;\r
-  EFI_CACHE_TYPE_DATA             CacheType;\r
-  EFI_CACHE_ASSOCIATIVITY_DATA    CacheAssociativity;\r
-  EFI_CACHE_CONFIGURATION_DATA    CacheConfig;\r
-  EFI_CACHE_ASSOCIATION_DATA      CacheAssociation;\r
-} EFI_CACHE_VARIABLE_RECORD;\r
-\r
-typedef struct {\r
-   EFI_SUBCLASS_TYPE1_HEADER      DataRecordHeader;\r
-   EFI_CACHE_VARIABLE_RECORD      VariableRecord;\r
-} EFI_CACHE_DATA_RECORD;\r
-\r
-#define EFI_MEMORY_SUBCLASS_VERSION     0x0100\r
-\r
-\r
-#define EFI_MEMORY_SIZE_RECORD_NUMBER                 0x00000001\r
-\r
-typedef enum _EFI_MEMORY_REGION_TYPE {\r
-  EfiMemoryRegionMemory                       = 0x01,\r
-  EfiMemoryRegionReserved                     = 0x02,\r
-  EfiMemoryRegionAcpi                         = 0x03,\r
-  EfiMemoryRegionNvs                          = 0x04\r
-} EFI_MEMORY_REGION_TYPE;\r
-\r
-typedef struct {\r
-  UINT32                      ProcessorNumber;\r
-  UINT16                      StartBusNumber;\r
-  UINT16                      EndBusNumber;\r
-  EFI_MEMORY_REGION_TYPE      MemoryRegionType;\r
-  EFI_EXP_BASE2_DATA          MemorySize;\r
-  EFI_PHYSICAL_ADDRESS        MemoryStartAddress;\r
-} EFI_MEMORY_SIZE_DATA;\r
-\r
-\r
-#define EFI_MEMORY_ARRAY_LOCATION_RECORD_NUMBER       0x00000002\r
-\r
-typedef enum _EFI_MEMORY_ARRAY_LOCATION {\r
-  EfiMemoryArrayLocationOther                 = 0x01,\r
-  EfiMemoryArrayLocationUnknown               = 0x02,\r
-  EfiMemoryArrayLocationSystemBoard           = 0x03,\r
-  EfiMemoryArrayLocationIsaAddonCard          = 0x04,\r
-  EfiMemoryArrayLocationEisaAddonCard         = 0x05,\r
-  EfiMemoryArrayLocationPciAddonCard          = 0x06,\r
-  EfiMemoryArrayLocationMcaAddonCard          = 0x07,\r
-  EfiMemoryArrayLocationPcmciaAddonCard       = 0x08,\r
-  EfiMemoryArrayLocationProprietaryAddonCard  = 0x09,\r
-  EfiMemoryArrayLocationNuBus                 = 0x0A,\r
-  EfiMemoryArrayLocationPc98C20AddonCard      = 0xA0,\r
-  EfiMemoryArrayLocationPc98C24AddonCard      = 0xA1,\r
-  EfiMemoryArrayLocationPc98EAddonCard        = 0xA2,\r
-  EfiMemoryArrayLocationPc98LocalBusAddonCard = 0xA3\r
-} EFI_MEMORY_ARRAY_LOCATION;\r
-\r
-typedef enum _EFI_MEMORY_ARRAY_USE {\r
-  EfiMemoryArrayUseOther                      = 0x01,\r
-  EfiMemoryArrayUseUnknown                    = 0x02,\r
-  EfiMemoryArrayUseSystemMemory               = 0x03,\r
-  EfiMemoryArrayUseVideoMemory                = 0x04,\r
-  EfiMemoryArrayUseFlashMemory                = 0x05,\r
-  EfiMemoryArrayUseNonVolatileRam             = 0x06,\r
-  EfiMemoryArrayUseCacheMemory                = 0x07,\r
-} EFI_MEMORY_ARRAY_USE;\r
-\r
-typedef enum _EFI_MEMORY_ERROR_CORRECTION {\r
-  EfiMemoryErrorCorrectionOther               = 0x01,\r
-  EfiMemoryErrorCorrectionUnknown             = 0x02,\r
-  EfiMemoryErrorCorrectionNone                = 0x03,\r
-  EfiMemoryErrorCorrectionParity              = 0x04,\r
-  EfiMemoryErrorCorrectionSingleBitEcc        = 0x05,\r
-  EfiMemoryErrorCorrectionMultiBitEcc         = 0x06,\r
-  EfiMemoryErrorCorrectionCrc                 = 0x07,\r
-} EFI_MEMORY_ERROR_CORRECTION;\r
-\r
-typedef struct {\r
-  EFI_MEMORY_ARRAY_LOCATION   MemoryArrayLocation;\r
-  EFI_MEMORY_ARRAY_USE        MemoryArrayUse;\r
-  EFI_MEMORY_ERROR_CORRECTION MemoryErrorCorrection;\r
-  EFI_EXP_BASE2_DATA          MaximumMemoryCapacity;\r
-  UINT16                      NumberMemoryDevices;\r
-} EFI_MEMORY_ARRAY_LOCATION_DATA;\r
-\r
-\r
-#define EFI_MEMORY_ARRAY_LINK_RECORD_NUMBER           0x00000003\r
-\r
-typedef enum _EFI_MEMORY_FORM_FACTOR {\r
-  EfiMemoryFormFactorOther                    = 0x01,\r
-  EfiMemoryFormFactorUnknown                  = 0x02,\r
-  EfiMemoryFormFactorSimm                     = 0x03,\r
-  EfiMemoryFormFactorSip                      = 0x04,\r
-  EfiMemoryFormFactorChip                     = 0x05,\r
-  EfiMemoryFormFactorDip                      = 0x06,\r
-  EfiMemoryFormFactorZip                      = 0x07,\r
-  EfiMemoryFormFactorProprietaryCard          = 0x08,\r
-  EfiMemoryFormFactorDimm                     = 0x09,\r
-  EfiMemoryFormFactorTsop                     = 0x0A,\r
-  EfiMemoryFormFactorRowOfChips               = 0x0B,\r
-  EfiMemoryFormFactorRimm                     = 0x0C,\r
-  EfiMemoryFormFactorSodimm                   = 0x0D,\r
-  EfiMemoryFormFactorSrimm                    = 0x0E,\r
-  EfiMemoryFormFactorFbDimm                   = 0x0F\r
-} EFI_MEMORY_FORM_FACTOR;\r
-\r
-typedef enum _EFI_MEMORY_ARRAY_TYPE {\r
-  EfiMemoryTypeOther                          = 0x01,\r
-  EfiMemoryTypeUnknown                        = 0x02,\r
-  EfiMemoryTypeDram                           = 0x03,\r
-  EfiMemoryTypeEdram                          = 0x04,\r
-  EfiMemoryTypeVram                           = 0x05,\r
-  EfiMemoryTypeSram                           = 0x06,\r
-  EfiMemoryTypeRam                            = 0x07,\r
-  EfiMemoryTypeRom                            = 0x08,\r
-  EfiMemoryTypeFlash                          = 0x09,\r
-  EfiMemoryTypeEeprom                         = 0x0A,\r
-  EfiMemoryTypeFeprom                         = 0x0B,\r
-  EfiMemoryTypeEprom                          = 0x0C,\r
-  EfiMemoryTypeCdram                          = 0x0D,\r
-  EfiMemoryType3Dram                          = 0x0E,\r
-  EfiMemoryTypeSdram                          = 0x0F,\r
-  EfiMemoryTypeSgram                          = 0x10,\r
-  EfiMemoryTypeRdram                          = 0x11,\r
-  EfiMemoryTypeDdr                            = 0x12,\r
-  EfiMemoryTypeDdr2                           = 0x13,\r
-  EfiMemoryTypeDdr2FbDimm                     = 0x14\r
-} EFI_MEMORY_ARRAY_TYPE;\r
-\r
-typedef struct {\r
-  UINT32                      Reserved        :1;\r
-  UINT32                      Other           :1;\r
-  UINT32                      Unknown         :1;\r
-  UINT32                      FastPaged       :1;\r
-  UINT32                      StaticColumn    :1;\r
-  UINT32                      PseudoStatic    :1;\r
-  UINT32                      Rambus          :1;\r
-  UINT32                      Synchronous     :1;\r
-  UINT32                      Cmos            :1;\r
-  UINT32                      Edo             :1;\r
-  UINT32                      WindowDram      :1;\r
-  UINT32                      CacheDram       :1;\r
-  UINT32                      Nonvolatile     :1;\r
-  UINT32                      Reserved1       :19;\r
-} EFI_MEMORY_TYPE_DETAIL;\r
-\r
-typedef enum {\r
-  EfiMemoryStateEnabled      = 0,\r
-  EfiMemoryStateUnknown      = 1,\r
-  EfiMemoryStateUnsupported  = 2,\r
-  EfiMemoryStateError        = 3,\r
-  EfiMemoryStateAbsent       = 4,\r
-  EfiMemoryStateDisabled     = 5,\r
-  EfiMemoryStatePartial      = 6\r
-} EFI_MEMORY_STATE;\r
-\r
-typedef struct {\r
-  STRING_REF                  MemoryDeviceLocator;\r
-  STRING_REF                  MemoryBankLocator;\r
-  STRING_REF                  MemoryManufacturer;\r
-  STRING_REF                  MemorySerialNumber;\r
-  STRING_REF                  MemoryAssetTag;\r
-  STRING_REF                  MemoryPartNumber;\r
-  EFI_INTER_LINK_DATA         MemoryArrayLink;\r
-  EFI_INTER_LINK_DATA         MemorySubArrayLink;\r
-  UINT16                      MemoryTotalWidth;\r
-  UINT16                      MemoryDataWidth;\r
-  EFI_EXP_BASE2_DATA          MemoryDeviceSize;\r
-  EFI_MEMORY_FORM_FACTOR      MemoryFormFactor;\r
-  UINT8                       MemoryDeviceSet;\r
-  EFI_MEMORY_ARRAY_TYPE       MemoryType;\r
-  EFI_MEMORY_TYPE_DETAIL      MemoryTypeDetail;\r
-  EFI_EXP_BASE10_DATA         MemorySpeed;\r
-  EFI_MEMORY_STATE            MemoryState;\r
-} EFI_MEMORY_ARRAY_LINK_DATA;\r
-\r
-\r
-#define EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER  0x00000004\r
-\r
-typedef struct {\r
-  EFI_PHYSICAL_ADDRESS        MemoryArrayStartAddress;\r
-  EFI_PHYSICAL_ADDRESS        MemoryArrayEndAddress;\r
-  EFI_INTER_LINK_DATA         PhysicalMemoryArrayLink;\r
-  UINT16                      MemoryArrayPartitionWidth;\r
-} EFI_MEMORY_ARRAY_START_ADDRESS_DATA;\r
-\r
-\r
-#define EFI_MEMORY_DEVICE_START_ADDRESS_RECORD_NUMBER 0x00000005\r
-\r
-typedef struct {\r
-  EFI_PHYSICAL_ADDRESS        MemoryDeviceStartAddress;\r
-  EFI_PHYSICAL_ADDRESS        MemoryDeviceEndAddress;\r
-  EFI_INTER_LINK_DATA         PhysicalMemoryDeviceLink;\r
-  EFI_INTER_LINK_DATA         PhysicalMemoryArrayLink;\r
-  UINT8                       MemoryDevicePartitionRowPosition;\r
-  UINT8                       MemoryDeviceInterleavePosition;\r
-  UINT8                       MemoryDeviceInterleaveDataDepth;\r
-} EFI_MEMORY_DEVICE_START_ADDRESS_DATA;\r
-\r
-\r
-//\r
-//  Memory. Channel Device Type -  SMBIOS Type 37\r
-//\r
-\r
-#define EFI_MEMORY_CHANNEL_TYPE_RECORD_NUMBER         0x00000006\r
-\r
-typedef enum _EFI_MEMORY_CHANNEL_TYPE {\r
-  EfiMemoryChannelTypeOther                   = 1,\r
-  EfiMemoryChannelTypeUnknown                 = 2,\r
-  EfiMemoryChannelTypeRambus                  = 3,\r
-  EfiMemoryChannelTypeSyncLink                = 4\r
-} EFI_MEMORY_CHANNEL_TYPE;\r
-\r
-typedef struct {\r
-  EFI_MEMORY_CHANNEL_TYPE     MemoryChannelType;\r
-  UINT8                       MemoryChannelMaximumLoad;\r
-  UINT8                       MemoryChannelDeviceCount;\r
-} EFI_MEMORY_CHANNEL_TYPE_DATA;\r
-\r
-#define EFI_MEMORY_CHANNEL_DEVICE_RECORD_NUMBER       0x00000007\r
-\r
-typedef struct {\r
-  UINT8                       DeviceId;\r
-  EFI_INTER_LINK_DATA         DeviceLink;\r
-  UINT8                       MemoryChannelDeviceLoad;\r
-} EFI_MEMORY_CHANNEL_DEVICE_DATA;\r
-\r
-\r
-\r
-typedef union _EFI_MEMORY_SUBCLASS_RECORDS {\r
-  EFI_MEMORY_SIZE_DATA                  SizeData;\r
-  EFI_MEMORY_ARRAY_LOCATION_DATA        ArrayLocationData;\r
-  EFI_MEMORY_ARRAY_LINK_DATA            ArrayLink;\r
-  EFI_MEMORY_ARRAY_START_ADDRESS_DATA   ArrayStartAddress;\r
-  EFI_MEMORY_DEVICE_START_ADDRESS_DATA  DeviceStartAddress;\r
-  EFI_MEMORY_CHANNEL_TYPE_DATA          ChannelTypeData;\r
-  EFI_MEMORY_CHANNEL_DEVICE_DATA        ChannelDeviceData;\r
-} EFI_MEMORY_SUBCLASS_RECORDS;\r
-\r
-typedef struct {\r
-  EFI_SUBCLASS_TYPE1_HEADER             Header;\r
-  EFI_MEMORY_SUBCLASS_RECORDS           Record;\r
-} EFI_MEMORY_SUBCLASS_DRIVER_DATA;\r
-\r
-#define EFI_MISC_SUBCLASS_VERSION     0x0100\r
-\r
-#pragma pack(1)\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Last PCI Bus Number\r
-//\r
-#define EFI_MISC_LAST_PCI_BUS_RECORD_NUMBER  0x00000001\r
-\r
-typedef struct {\r
-  UINT8   LastPciBus;\r
-} EFI_MISC_LAST_PCI_BUS_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Misc. BIOS Vendor - SMBIOS Type 0\r
-//\r
-#define EFI_MISC_BIOS_VENDOR_RECORD_NUMBER  0x00000002\r
-\r
-typedef struct {\r
-  UINT64  Reserved1                         :2;\r
-  UINT64  Unknown                           :1;\r
-  UINT64  BiosCharacteristicsNotSupported   :1;\r
-  UINT64  IsaIsSupported                    :1;\r
-  UINT64  McaIsSupported                    :1;\r
-  UINT64  EisaIsSupported                   :1;\r
-  UINT64  PciIsSupported                    :1;\r
-  UINT64  PcmciaIsSupported                 :1;\r
-  UINT64  PlugAndPlayIsSupported            :1;\r
-  UINT64  ApmIsSupported                    :1;\r
-  UINT64  BiosIsUpgradable                  :1;\r
-  UINT64  BiosShadowingAllowed              :1;\r
-  UINT64  VlVesaIsSupported                 :1;\r
-  UINT64  EscdSupportIsAvailable            :1;\r
-  UINT64  BootFromCdIsSupported             :1;\r
-  UINT64  SelectableBootIsSupported         :1;\r
-  UINT64  RomBiosIsSocketed                 :1;\r
-  UINT64  BootFromPcmciaIsSupported         :1;\r
-  UINT64  EDDSpecificationIsSupported       :1;\r
-  UINT64  JapaneseNecFloppyIsSupported      :1;\r
-  UINT64  JapaneseToshibaFloppyIsSupported  :1;\r
-  UINT64  Floppy525_360IsSupported          :1;\r
-  UINT64  Floppy525_12IsSupported           :1;\r
-  UINT64  Floppy35_720IsSupported           :1;\r
-  UINT64  Floppy35_288IsSupported           :1;\r
-  UINT64  PrintScreenIsSupported            :1;\r
-  UINT64  Keyboard8042IsSupported           :1;\r
-  UINT64  SerialIsSupported                 :1;\r
-  UINT64  PrinterIsSupported                :1;\r
-  UINT64  CgaMonoIsSupported                :1;\r
-  UINT64  NecPc98                           :1;\r
-  UINT64  AcpiIsSupported                   :1;\r
-  UINT64  UsbLegacyIsSupported              :1;\r
-  UINT64  AgpIsSupported                    :1;\r
-  UINT64  I20BootIsSupported                :1;\r
-  UINT64  Ls120BootIsSupported              :1;\r
-  UINT64  AtapiZipDriveBootIsSupported      :1;\r
-  UINT64  Boot1394IsSupported               :1;\r
-  UINT64  SmartBatteryIsSupported           :1;\r
-  UINT64  BiosBootSpecIsSupported           :1;\r
-  UINT64  FunctionKeyNetworkBootIsSupported :1;\r
-  UINT64  Reserved                          :22;\r
-} EFI_MISC_BIOS_CHARACTERISTICS;\r
-\r
-typedef struct {\r
-  UINT64  BiosReserved                      :16;\r
-  UINT64  SystemReserved                    :16;\r
-  UINT64  Reserved                          :32;\r
-} EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION;\r
-\r
-typedef struct {\r
-  STRING_REF                      BiosVendor;\r
-  STRING_REF                      BiosVersion;\r
-  STRING_REF                      BiosReleaseDate;\r
-  EFI_PHYSICAL_ADDRESS            BiosStartingAddress;\r
-  EFI_EXP_BASE2_DATA              BiosPhysicalDeviceSize;\r
-  EFI_MISC_BIOS_CHARACTERISTICS   BiosCharacteristics1;\r
-  EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION  BiosCharacteristics2;\r
-  UINT8                           BiosMajorRelease;\r
-  UINT8                           BiosMinorRelease;\r
-  UINT8                           BiosEmbeddedFirmwareMajorRelease;\r
-  UINT8                           BiosEmbeddedFirmwareMinorRelease;\r
-} EFI_MISC_BIOS_VENDOR_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Misc. System Manufacturer - SMBIOS Type 1\r
-//\r
-#define EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER 0x00000003\r
-\r
-typedef enum {\r
-  EfiSystemWakeupTypeReserved        = 0,\r
-  EfiSystemWakeupTypeOther           = 1,\r
-  EfiSystemWakeupTypeUnknown         = 2,\r
-  EfiSystemWakeupTypeApmTimer        = 3,\r
-  EfiSystemWakeupTypeModemRing       = 4,\r
-  EfiSystemWakeupTypeLanRemote       = 5,\r
-  EfiSystemWakeupTypePowerSwitch     = 6,\r
-  EfiSystemWakeupTypePciPme          = 7,\r
-  EfiSystemWakeupTypeAcPowerRestored = 8,\r
-} EFI_MISC_SYSTEM_WAKEUP_TYPE;\r
-\r
-typedef struct {\r
-  STRING_REF                      SystemManufacturer;\r
-  STRING_REF                      SystemProductName;\r
-  STRING_REF                      SystemVersion;\r
-  STRING_REF                      SystemSerialNumber;\r
-  EFI_GUID                        SystemUuid;\r
-  EFI_MISC_SYSTEM_WAKEUP_TYPE     SystemWakeupType;\r
-  STRING_REF                      SystemSKUNumber;\r
-  STRING_REF                      SystemFamily;\r
-} EFI_MISC_SYSTEM_MANUFACTURER_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Misc. Base Board Manufacturer - SMBIOS Type 2\r
-//\r
-#define EFI_MISC_BASE_BOARD_MANUFACTURER_RECORD_NUMBER 0x00000004\r
-\r
-typedef struct {\r
-  UINT32  Motherboard           :1;\r
-  UINT32  RequiresDaughterCard  :1;\r
-  UINT32  Removable             :1;\r
-  UINT32  Replaceable           :1;\r
-  UINT32  HotSwappable          :1;\r
-  UINT32  Reserved              :27;\r
-} EFI_BASE_BOARD_FEATURE_FLAGS;\r
-\r
-typedef enum {\r
-  EfiBaseBoardTypeUnknown                = 1,\r
-  EfiBaseBoardTypeOther                  = 2,\r
-  EfiBaseBoardTypeServerBlade            = 3,\r
-  EfiBaseBoardTypeConnectivitySwitch     = 4,\r
-  EfiBaseBoardTypeSystemManagementModule = 5,\r
-  EfiBaseBoardTypeProcessorModule        = 6,\r
-  EfiBaseBoardTypeIOModule               = 7,\r
-  EfiBaseBoardTypeMemoryModule           = 8,\r
-  EfiBaseBoardTypeDaughterBoard          = 9,\r
-  EfiBaseBoardTypeMotherBoard            = 0xA,\r
-  EfiBaseBoardTypeProcessorMemoryModule  = 0xB,\r
-  EfiBaseBoardTypeProcessorIOModule      = 0xC,\r
-  EfiBaseBoardTypeInterconnectBoard      = 0xD,\r
-} EFI_BASE_BOARD_TYPE;\r
-\r
-typedef struct {\r
-  STRING_REF                      BaseBoardManufacturer;\r
-  STRING_REF                      BaseBoardProductName;\r
-  STRING_REF                      BaseBoardVersion;\r
-  STRING_REF                      BaseBoardSerialNumber;\r
-  STRING_REF                      BaseBoardAssetTag;\r
-  STRING_REF                      BaseBoardChassisLocation;\r
-  EFI_BASE_BOARD_FEATURE_FLAGS    BaseBoardFeatureFlags;\r
-  EFI_BASE_BOARD_TYPE             BaseBoardType;\r
-  EFI_INTER_LINK_DATA             BaseBoardChassisLink;\r
-  UINT32                          BaseBoardNumberLinks;\r
-  EFI_INTER_LINK_DATA             LinkN;\r
-} EFI_MISC_BASE_BOARD_MANUFACTURER_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Misc. System/Chassis Enclosure - SMBIOS Type 3\r
-//\r
-#define EFI_MISC_CHASSIS_MANUFACTURER_RECORD_NUMBER  0x00000005\r
-\r
-typedef enum {\r
-  EfiMiscChassisTypeOther               = 0x1,\r
-  EfiMiscChassisTypeUnknown             = 0x2,\r
-  EfiMiscChassisTypeDeskTop             = 0x3,\r
-  EfiMiscChassisTypeLowProfileDesktop   = 0x4,\r
-  EfiMiscChassisTypePizzaBox            = 0x5,\r
-  EfiMiscChassisTypeMiniTower           = 0x6,\r
-  EfiMiscChassisTypeTower               = 0x7,\r
-  EfiMiscChassisTypePortable            = 0x8,\r
-  EfiMiscChassisTypeLapTop              = 0x9,\r
-  EfiMiscChassisTypeNotebook            = 0xA,\r
-  EfiMiscChassisTypeHandHeld            = 0xB,\r
-  EfiMiscChassisTypeDockingStation      = 0xC,\r
-  EfiMiscChassisTypeAllInOne            = 0xD,\r
-  EfiMiscChassisTypeSubNotebook         = 0xE,\r
-  EfiMiscChassisTypeSpaceSaving         = 0xF,\r
-  EfiMiscChassisTypeLunchBox            = 0x10,\r
-  EfiMiscChassisTypeMainServerChassis   = 0x11,\r
-  EfiMiscChassisTypeExpansionChassis    = 0x12,\r
-  EfiMiscChassisTypeSubChassis          = 0x13,\r
-  EfiMiscChassisTypeBusExpansionChassis = 0x14,\r
-  EfiMiscChassisTypePeripheralChassis   = 0x15,\r
-  EfiMiscChassisTypeRaidChassis         = 0x16,\r
-  EfiMiscChassisTypeRackMountChassis    = 0x17,\r
-  EfiMiscChassisTypeSealedCasePc        = 0x18,\r
-  EfiMiscChassisMultiSystemChassis      = 0x19,\r
-} EFI_MISC_CHASSIS_TYPE;\r
-\r
-typedef struct {\r
-  UINT32  ChassisType       :16;\r
-  UINT32  ChassisLockPresent:1;\r
-  UINT32  Reserved          :15;\r
-} EFI_MISC_CHASSIS_STATUS;\r
-\r
-typedef enum {\r
-  EfiChassisStateOther           = 0x01,\r
-  EfiChassisStateUnknown         = 0x02,\r
-  EfiChassisStateSafe            = 0x03,\r
-  EfiChassisStateWarning         = 0x04,\r
-  EfiChassisStateCritical        = 0x05,\r
-  EfiChassisStateNonRecoverable  = 0x06,\r
-} EFI_MISC_CHASSIS_STATE;\r
-\r
-typedef enum {\r
-  EfiChassisSecurityStatusOther                          = 0x01,\r
-  EfiChassisSecurityStatusUnknown                        = 0x02,\r
-  EfiChassisSecurityStatusNone                           = 0x03,\r
-  EfiChassisSecurityStatusExternalInterfaceLockedOut     = 0x04,\r
-  EfiChassisSecurityStatusExternalInterfaceLockedEnabled = 0x05,\r
-} EFI_MISC_CHASSIS_SECURITY_STATE;\r
-\r
-typedef struct {\r
-  UINT32  RecordType  :1;\r
-  UINT32  Reserved    :24;\r
-} EFI_MISC_ELEMENT_TYPE;\r
-\r
-typedef struct {\r
-  EFI_MISC_ELEMENT_TYPE   ChassisElementType;\r
-  EFI_INTER_LINK_DATA     ChassisElementStructure;\r
-  EFI_BASE_BOARD_TYPE     ChassisBaseBoard;\r
-  UINT32                  ChassisElementMinimum;\r
-  UINT32                  ChassisElementMaximum;\r
-} EFI_MISC_ELEMENTS;\r
-\r
-typedef struct {\r
-  STRING_REF                      ChassisManufacturer;\r
-  STRING_REF                      ChassisVersion;\r
-  STRING_REF                      ChassisSerialNumber;\r
-  STRING_REF                      ChassisAssetTag;\r
-  EFI_MISC_CHASSIS_STATUS         ChassisType;\r
-  EFI_MISC_CHASSIS_STATE          ChassisBootupState;\r
-  EFI_MISC_CHASSIS_STATE          ChassisPowerSupplyState;\r
-  EFI_MISC_CHASSIS_STATE          ChassisThermalState;\r
-  EFI_MISC_CHASSIS_SECURITY_STATE ChassisSecurityState;\r
-  UINT32                          ChassisOemDefined;\r
-  UINT32                          ChassisHeight;\r
-  UINT32                          ChassisNumberPowerCords;\r
-  UINT32                          ChassisElementCount;\r
-  UINT32                          ChassisElementRecordLength;//\r
-  EFI_MISC_ELEMENTS               ChassisElements;\r
-} EFI_MISC_CHASSIS_MANUFACTURER_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Misc. Port Connector Information - SMBIOS Type 8\r
-//\r
-#define EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_RECORD_NUMBER 0x00000006\r
-\r
-typedef enum {\r
-  EfiPortConnectorTypeNone                   = 0x00,\r
-  EfiPortConnectorTypeCentronics             = 0x01,\r
-  EfiPortConnectorTypeMiniCentronics         = 0x02,\r
-  EfiPortConnectorTypeProprietary            = 0x03,\r
-  EfiPortConnectorTypeDB25Male               = 0x04,\r
-  EfiPortConnectorTypeDB25Female             = 0x05,\r
-  EfiPortConnectorTypeDB15Male               = 0x06,\r
-  EfiPortConnectorTypeDB15Female             = 0x07,\r
-  EfiPortConnectorTypeDB9Male                = 0x08,\r
-  EfiPortConnectorTypeDB9Female              = 0x09,\r
-  EfiPortConnectorTypeRJ11                   = 0x0A,\r
-  EfiPortConnectorTypeRJ45                   = 0x0B,\r
-  EfiPortConnectorType50PinMiniScsi          = 0x0C,\r
-  EfiPortConnectorTypeMiniDin                = 0x0D,\r
-  EfiPortConnectorTypeMicriDin               = 0x0E,\r
-  EfiPortConnectorTypePS2                    = 0x0F,\r
-  EfiPortConnectorTypeInfrared               = 0x10,\r
-  EfiPortConnectorTypeHpHil                  = 0x11,\r
-  EfiPortConnectorTypeUsb                    = 0x12,\r
-  EfiPortConnectorTypeSsaScsi                = 0x13,\r
-  EfiPortConnectorTypeCircularDin8Male       = 0x14,\r
-  EfiPortConnectorTypeCircularDin8Female     = 0x15,\r
-  EfiPortConnectorTypeOnboardIde             = 0x16,\r
-  EfiPortConnectorTypeOnboardFloppy          = 0x17,\r
-  EfiPortConnectorType9PinDualInline         = 0x18,\r
-  EfiPortConnectorType25PinDualInline        = 0x19,\r
-  EfiPortConnectorType50PinDualInline        = 0x1A,\r
-  EfiPortConnectorType68PinDualInline        = 0x1B,\r
-  EfiPortConnectorTypeOnboardSoundInput      = 0x1C,\r
-  EfiPortConnectorTypeMiniCentronicsType14   = 0x1D,\r
-  EfiPortConnectorTypeMiniCentronicsType26   = 0x1E,\r
-  EfiPortConnectorTypeHeadPhoneMiniJack      = 0x1F,\r
-  EfiPortConnectorTypeBNC                    = 0x20,\r
-  EfiPortConnectorType1394                   = 0x21,\r
-  EfiPortConnectorTypePC98                   = 0xA0,\r
-  EfiPortConnectorTypePC98Hireso             = 0xA1,\r
-  EfiPortConnectorTypePCH98                  = 0xA2,\r
-  EfiPortConnectorTypePC98Note               = 0xA3,\r
-  EfiPortConnectorTypePC98Full               = 0xA4,\r
-  EfiPortConnectorTypeOther                  = 0xFF,\r
-} EFI_MISC_PORT_CONNECTOR_TYPE;\r
-\r
-typedef enum {\r
-  EfiPortTypeNone                      = 0x00,\r
-  EfiPortTypeParallelXtAtCompatible    = 0x01,\r
-  EfiPortTypeParallelPortPs2           = 0x02,\r
-  EfiPortTypeParallelPortEcp           = 0x03,\r
-  EfiPortTypeParallelPortEpp           = 0x04,\r
-  EfiPortTypeParallelPortEcpEpp        = 0x05,\r
-  EfiPortTypeSerialXtAtCompatible      = 0x06,\r
-  EfiPortTypeSerial16450Compatible     = 0x07,\r
-  EfiPortTypeSerial16550Compatible     = 0x08,\r
-  EfiPortTypeSerial16550ACompatible    = 0x09,\r
-  EfiPortTypeScsi                      = 0x0A,\r
-  EfiPortTypeMidi                      = 0x0B,\r
-  EfiPortTypeJoyStick                  = 0x0C,\r
-  EfiPortTypeKeyboard                  = 0x0D,\r
-  EfiPortTypeMouse                     = 0x0E,\r
-  EfiPortTypeSsaScsi                   = 0x0F,\r
-  EfiPortTypeUsb                       = 0x10,\r
-  EfiPortTypeFireWire                  = 0x11,\r
-  EfiPortTypePcmciaTypeI               = 0x12,\r
-  EfiPortTypePcmciaTypeII              = 0x13,\r
-  EfiPortTypePcmciaTypeIII             = 0x14,\r
-  EfiPortTypeCardBus                   = 0x15,\r
-  EfiPortTypeAccessBusPort             = 0x16,\r
-  EfiPortTypeScsiII                    = 0x17,\r
-  EfiPortTypeScsiWide                  = 0x18,\r
-  EfiPortTypePC98                      = 0x19,\r
-  EfiPortTypePC98Hireso                = 0x1A,\r
-  EfiPortTypePCH98                     = 0x1B,\r
-  EfiPortTypeVideoPort                 = 0x1C,\r
-  EfiPortTypeAudioPort                 = 0x1D,\r
-  EfiPortTypeModemPort                 = 0x1E,\r
-  EfiPortTypeNetworkPort               = 0x1F,\r
-  EfiPortType8251Compatible            = 0xA0,\r
-  EfiPortType8251FifoCompatible        = 0xA1,\r
-  EfiPortTypeOther                     = 0xFF,\r
-} EFI_MISC_PORT_TYPE;\r
-\r
-typedef struct {\r
-  STRING_REF                    PortInternalConnectorDesignator;\r
-  STRING_REF                    PortExternalConnectorDesignator;\r
-  EFI_MISC_PORT_CONNECTOR_TYPE  PortInternalConnectorType;\r
-  EFI_MISC_PORT_CONNECTOR_TYPE  PortExternalConnectorType;\r
-  EFI_MISC_PORT_TYPE            PortType;\r
-  EFI_MISC_PORT_DEVICE_PATH     PortPath;\r
-} EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Misc. System Slots - SMBIOS Type 9\r
-//\r
-#define EFI_MISC_SYSTEM_SLOT_DESIGNATION_RECORD_NUMBER 0x00000007\r
-\r
-typedef enum {\r
-  EfiSlotTypeOther                        = 0x01,\r
-  EfiSlotTypeUnknown                      = 0x02,\r
-  EfiSlotTypeIsa                          = 0x03,\r
-  EfiSlotTypeMca                          = 0x04,\r
-  EfiSlotTypeEisa                         = 0x05,\r
-  EfiSlotTypePci                          = 0x06,\r
-  EfiSlotTypePcmcia                       = 0x07,\r
-  EfiSlotTypeVlVesa                       = 0x08,\r
-  EfiSlotTypeProprietary                  = 0x09,\r
-  EfiSlotTypeProcessorCardSlot            = 0x0A,\r
-  EfiSlotTypeProprietaryMemoryCardSlot    = 0x0B,\r
-  EfiSlotTypeIORiserCardSlot              = 0x0C,\r
-  EfiSlotTypeNuBus                        = 0x0D,\r
-  EfiSlotTypePci66MhzCapable              = 0x0E,\r
-  EfiSlotTypeAgp                          = 0x0F,\r
-  EfiSlotTypeApg2X                        = 0x10,\r
-  EfiSlotTypeAgp4X                        = 0x11,\r
-  EfiSlotTypePciX                         = 0x12,\r
-  EfiSlotTypeAgp4x                        = 0x13,\r
-  EfiSlotTypePC98C20                      = 0xA0,\r
-  EfiSlotTypePC98C24                      = 0xA1,\r
-  EfiSlotTypePC98E                        = 0xA2,\r
-  EfiSlotTypePC98LocalBus                 = 0xA3,\r
-  EfiSlotTypePC98Card                     = 0xA4,\r
-  EfiSlotTypePciExpress                   = 0xA5\r
-} EFI_MISC_SLOT_TYPE;\r
-\r
-typedef enum {\r
-  EfiSlotDataBusWidthOther      = 0x01,\r
-  EfiSlotDataBusWidthUnknown    = 0x02,\r
-  EfiSlotDataBusWidth8Bit       = 0x03,\r
-  EfiSlotDataBusWidth16Bit      = 0x04,\r
-  EfiSlotDataBusWidth32Bit      = 0x05,\r
-  EfiSlotDataBusWidth64Bit      = 0x06,\r
-  EfiSlotDataBusWidth128Bit     = 0x07,\r
-} EFI_MISC_SLOT_DATA_BUS_WIDTH;\r
-\r
-typedef enum {\r
-  EfiSlotUsageOther     = 1,\r
-  EfiSlotUsageUnknown   = 2,\r
-  EfiSlotUsageAvailable = 3,\r
-  EfiSlotUsageInUse     = 4,\r
-} EFI_MISC_SLOT_USAGE;\r
-\r
-typedef enum {\r
-  EfiSlotLengthOther   = 1,\r
-  EfiSlotLengthUnknown = 2,\r
-  EfiSlotLengthShort   = 3,\r
-  EfiSlotLengthLong    = 4\r
-} EFI_MISC_SLOT_LENGTH;\r
-\r
-typedef struct {\r
-  UINT32  CharacteristicsUnknown  :1;\r
-  UINT32  Provides50Volts         :1;\r
-  UINT32  Provides33Volts         :1;\r
-  UINT32  SharedSlot              :1;\r
-  UINT32  PcCard16Supported       :1;\r
-  UINT32  CardBusSupported        :1;\r
-  UINT32  ZoomVideoSupported      :1;\r
-  UINT32  ModemRingResumeSupported:1;\r
-  UINT32  PmeSignalSupported      :1;\r
-  UINT32  HotPlugDevicesSupported :1;\r
-  UINT32  SmbusSignalSupported    :1;\r
-  UINT32  Reserved                :21;\r
-} EFI_MISC_SLOT_CHARACTERISTICS;\r
-\r
-typedef struct {\r
-  STRING_REF                    SlotDesignation;\r
-  EFI_MISC_SLOT_TYPE            SlotType;\r
-  EFI_MISC_SLOT_DATA_BUS_WIDTH  SlotDataBusWidth;\r
-  EFI_MISC_SLOT_USAGE           SlotUsage;\r
-  EFI_MISC_SLOT_LENGTH          SlotLength;\r
-  UINT16                        SlotId;\r
-  EFI_MISC_SLOT_CHARACTERISTICS SlotCharacteristics;\r
-  EFI_DEVICE_PATH_PROTOCOL      SlotDevicePath;\r
-} EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Misc. Onboard Device - SMBIOS Type 10\r
-//\r
-#define EFI_MISC_ONBOARD_DEVICE_RECORD_NUMBER 0x00000008\r
-\r
-typedef enum {\r
-  EfiOnBoardDeviceTypeOther          = 1,\r
-  EfiOnBoardDeviceTypeUnknown        = 2,\r
-  EfiOnBoardDeviceTypeVideo          = 3,\r
-  EfiOnBoardDeviceTypeScsiController = 4,\r
-  EfiOnBoardDeviceTypeEthernet       = 5,\r
-  EfiOnBoardDeviceTypeTokenRing      = 6,\r
-  EfiOnBoardDeviceTypeSound          = 7,\r
-} EFI_MISC_ONBOARD_DEVICE_TYPE;\r
-\r
-typedef struct {\r
-  UINT32  DeviceType    :16;\r
-  UINT32  DeviceEnabled :1;\r
-  UINT32  Reserved      :15;\r
-} EFI_MISC_ONBOARD_DEVICE_STATUS;\r
-\r
-typedef struct {\r
-  STRING_REF                           OnBoardDeviceDescription;\r
-  EFI_MISC_ONBOARD_DEVICE_STATUS       OnBoardDeviceStatus;\r
-  EFI_DEVICE_PATH_PROTOCOL             OnBoardDevicePath;\r
-} EFI_MISC_ONBOARD_DEVICE_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Misc. BIOS Language Information - SMBIOS Type 11\r
-//\r
-#define EFI_MISC_OEM_STRING_RECORD_NUMBER 0x00000009\r
-\r
-typedef struct {\r
-  STRING_REF                          OemStringRef[1];\r
-} EFI_MISC_OEM_STRING_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Misc. System Options - SMBIOS Type 12\r
-//\r
-typedef struct {\r
-  STRING_REF                          SystemOptionStringRef[1];\r
-} EFI_MISC_SYSTEM_OPTION_STRING_DATA;\r
-\r
-#define EFI_MISC_SYSTEM_OPTION_STRING_RECORD_NUMBER 0x0000000A\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Misc. Number of Installable Languages - SMBIOS Type 13\r
-//\r
-#define EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_RECORD_NUMBER 0x0000000B\r
-\r
-typedef struct {\r
-  UINT32                              AbbreviatedLanguageFormat :1;\r
-  UINT32                              Reserved                  :31;\r
-} EFI_MISC_LANGUAGE_FLAGS;\r
-\r
-typedef struct {\r
-  UINT16                              NumberOfInstallableLanguages;\r
-  EFI_MISC_LANGUAGE_FLAGS             LanguageFlags;\r
-  UINT16                              CurrentLanguageNumber;\r
-} EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Misc. System Language String\r
-//\r
-#define EFI_MISC_SYSTEM_LANGUAGE_STRING_RECORD_NUMBER 0x0000000C\r
-\r
-typedef struct {\r
-  UINT16                              LanguageId;\r
-  STRING_REF                          SystemLanguageString;\r
-} EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Group Associations - SMBIOS Type 14\r
-//\r
-#define EFI_MISC_GROUP_NAME_RECORD_NUMBER          0x0000000D\r
-\r
-typedef struct {\r
-  STRING_REF               GroupName;\r
-  UINT16                   NumberGroupItems;\r
-  UINT16                   GroupId;\r
-} EFI_MISC_GROUP_NAME_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Group Item Set Element\r
-//\r
-#define EFI_MISC_GROUP_ITEM_SET_RECORD_NUMBER      0x0000000E\r
-\r
-typedef struct {\r
-  EFI_GUID                 SubClass;\r
-  EFI_INTER_LINK_DATA      GroupLink;\r
-  UINT16                   GroupId;\r
-  UINT16                   GroupElementId;\r
-} EFI_MISC_GROUP_ITEM_SET_DATA;\r
-\r
-//  Misc. System Event Log  - SMBIOS Type 15\r
-//\r
-#define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x0000000D\r
-typedef struct {\r
-  UINT16                LogAreaLength;\r
-  UINT16                LogHeaderStartOffset;\r
-  UINT16                LogDataStartOffset;\r
-  UINT8                 AccessMethod;\r
-  UINT8                 LogStatus;\r
-  UINT32                LogChangeToken;\r
-  UINT32                AccessMethodAddress;\r
-  UINT8                 LogHeaderFormat;\r
-  UINT8                 NumberOfSupportedLogType;\r
-  UINT8                 LengthOfLogDescriptor;\r
-} EFI_MISC_SYSTEM_EVENT_LOG_DATA;\r
-\r
-//\r
-// Access Method.\r
-//  0x00~0x04:  as following definition\r
-//  0x05~0x7f:  Available for future assignment.\r
-//  0x80~0xff:  BIOS Vendor/OEM-specific.\r
-//\r
-#define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT    0x00\r
-#define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT    0X01\r
-#define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT   0X02\r
-#define ACCESS_MEMORY_MAPPED                  0x03\r
-#define ACCESS_GPNV                           0x04\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-//  Misc. Pointing Device Type - SMBIOS Type 21\r
-//\r
-#define EFI_MISC_POINTING_DEVICE_TYPE_RECORD_NUMBER 0x0000000F\r
-\r
-typedef enum {\r
-  EfiPointingDeviceTypeOther         = 0x01,\r
-  EfiPointingDeviceTypeUnknown       = 0x02,\r
-  EfiPointingDeviceTypeMouse         = 0x03,\r
-  EfiPointingDeviceTypeTrackBall     = 0x04,\r
-  EfiPointingDeviceTypeTrackPoint    = 0x05,\r
-  EfiPointingDeviceTypeGlidePoint    = 0x06,\r
-  EfiPointingDeviceTouchPad          = 0x07,\r
-  EfiPointingDeviceTouchScreen       = 0x08,\r
-  EfiPointingDeviceOpticalSensor     = 0x09,\r
-} EFI_MISC_POINTING_DEVICE_TYPE;\r
-\r
-typedef enum {\r
-  EfiPointingDeviceInterfaceOther              = 0x01,\r
-  EfiPointingDeviceInterfaceUnknown            = 0x02,\r
-  EfiPointingDeviceInterfaceSerial             = 0x03,\r
-  EfiPointingDeviceInterfacePs2                = 0x04,\r
-  EfiPointingDeviceInterfaceInfrared           = 0x05,\r
-  EfiPointingDeviceInterfaceHpHil              = 0x06,\r
-  EfiPointingDeviceInterfaceBusMouse           = 0x07,\r
-  EfiPointingDeviceInterfaceADB                = 0x08,\r
-  EfiPointingDeviceInterfaceBusMouseDB9        = 0xA0,\r
-  EfiPointingDeviceInterfaceBusMouseMicroDin   = 0xA1,\r
-  EfiPointingDeviceInterfaceUsb                = 0xA2,\r
-} EFI_MISC_POINTING_DEVICE_INTERFACE;\r
-\r
-typedef struct {\r
-  EFI_MISC_POINTING_DEVICE_TYPE       PointingDeviceType;\r
-  EFI_MISC_POINTING_DEVICE_INTERFACE  PointingDeviceInterface;\r
-  UINT16                              NumberPointingDeviceButtons;\r
-  EFI_DEVICE_PATH_PROTOCOL            PointingDevicePath;\r
-} EFI_MISC_PORTING_DEVICE_TYPE_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Portable Battery - SMBIOS Type 22\r
-//\r
-#define EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER  0x00000010\r
-\r
-typedef enum {\r
-  EfiBatteryDeviceChemistryTypeOther               = 0x01,\r
-  EfiBatteryDeviceChemistryTypeUnknown             = 0x02,\r
-  EfiBatteryDeviceChemistryTypeLeadAcid            = 0x03,\r
-  EfiBatteryDeviceChemistryTypeNickelCadmium       = 0x04,\r
-  EfiBatteryDeviceChemistryTypeNickelMetalHydride  = 0x05,\r
-  EfiBatteryDeviceChemistryTypeLithiumIon          = 0x06,\r
-  EfiBatteryDeviceChemistryTypeZincAir             = 0x07,\r
-  EfiBatteryDeviceChemistryTypeLithiumPolymer      = 0x08,\r
-} EFI_MISC_BATTERY_DEVICE_CHEMISTRY;\r
-\r
-typedef struct  {\r
-  UINT32 Date              :5;\r
-  UINT32 Month             :4;\r
-  UINT32 Year              :7;\r
-  UINT32 Reserved          :16;\r
-} EFI_MISC_BATTERY_SBDS_MANUFACTURE_DATE;\r
-\r
-typedef struct {\r
-  STRING_REF                         BatteryLocation;\r
-  STRING_REF                         BatteryManufacturer;\r
-  STRING_REF                         BatteryManufactureDate;\r
-  STRING_REF                         BatterySerialNumber;\r
-  STRING_REF                         BatteryDeviceName;\r
-  STRING_REF                         BatterySbdsVersionNumber;\r
-  STRING_REF                         BatterySbdsDeviceChemistry;\r
-  EFI_MISC_BATTERY_DEVICE_CHEMISTRY  BatteryDeviceChemistry;\r
-  EFI_EXP_BASE10_DATA                BatteryDesignCapacity;\r
-  EFI_EXP_BASE10_DATA                BatteryDesignVoltage;\r
-  UINT16                             BatteryMaximumError;\r
-  UINT16                             BatterySbdsSerialNumber;\r
-  EFI_MISC_BATTERY_SBDS_MANUFACTURE_DATE\r
-                                     BatterySbdsManufacturingDate;\r
-  UINT32                             BatteryOemSpecific;\r
-} EFI_MISC_BATTERY_LOCATION_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Misc. Reset Capabilities - SMBIOS Type 23\r
-//\r
-#define EFI_MISC_RESET_CAPABILITIES_RECORD_NUMBER 0x00000011\r
-\r
-typedef struct {\r
-  UINT32  Status              :1;\r
-  UINT32  BootOption          :2;\r
-  UINT32  BootOptionOnLimit   :2;\r
-  UINT32  WatchdogTimerPresent:1;\r
-  UINT32  Reserved            :26;\r
-} EFI_MISC_RESET_CAPABILITIES_TYPE;\r
-\r
-typedef struct {\r
-  EFI_MISC_RESET_CAPABILITIES_TYPE  ResetCapabilities;\r
-  UINT16                            ResetCount;\r
-  UINT16                            ResetLimit;\r
-  UINT16                            ResetTimerInterval;\r
-  UINT16                            ResetTimeout;\r
-} EFI_MISC_RESET_CAPABILITIES;\r
-\r
-typedef struct {\r
-    EFI_MISC_RESET_CAPABILITIES   ResetCapabilities;\r
-    UINT16                        ResetCount;\r
-    UINT16                        ResetLimit;\r
-    UINT16                        ResetTimerInterval;\r
-    UINT16                        ResetTimeout;\r
-} EFI_MISC_RESET_CAPABILITIES_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Misc. Hardware Security - SMBIOS Type 24\r
-//\r
-#define EFI_MISC_HARDWARE_SECURITY_RECORD_NUMBER 0x00000012\r
-\r
-typedef enum {\r
-  EfiHardwareSecurityStatusDisabled       = 0,\r
-  EfiHardwareSecurityStatusEnabled        = 1,\r
-  EfiHardwareSecurityStatusNotImplemented = 2,\r
-  EfiHardwareSecurityStatusUnknown        = 3\r
-} EFI_MISC_HARDWARE_SECURITY_STATUS;\r
-\r
-typedef struct {\r
-  EFI_MISC_HARDWARE_SECURITY_STATUS   FrontPanelResetStatus       :2;\r
-  EFI_MISC_HARDWARE_SECURITY_STATUS   AdministratorPasswordStatus :2;\r
-  EFI_MISC_HARDWARE_SECURITY_STATUS   KeyboardPasswordStatus      :2;\r
-  EFI_MISC_HARDWARE_SECURITY_STATUS   PowerOnPasswordStatus       :2;\r
-  EFI_MISC_HARDWARE_SECURITY_STATUS   Reserved                    :24;\r
-} EFI_MISC_HARDWARE_SECURITY_SETTINGS;\r
-\r
-typedef struct {\r
-  EFI_MISC_HARDWARE_SECURITY_SETTINGS HardwareSecuritySettings;\r
-} EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// System Power Controls - SMBIOS Type 25\r
-//\r
-#define EFI_MISC_SCHEDULED_POWER_ON_MONTH_RECORD_NUMBER  0x00000013\r
-\r
-typedef struct {\r
-  UINT16             ScheduledPoweronMonth;\r
-  UINT16             ScheduledPoweronDayOfMonth;\r
-  UINT16             ScheduledPoweronHour;\r
-  UINT16             ScheduledPoweronMinute;\r
-  UINT16             ScheduledPoweronSecond;\r
-} EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Voltage Probe - SMBIOS Type 26\r
-//\r
-#define EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_RECORD_NUMBER  0x00000014\r
-\r
-typedef struct {\r
-  UINT32 VoltageProbeSite        :5;\r
-  UINT32 VoltageProbeStatus      :3;\r
-  UINT32 Reserved                :24;\r
-} EFI_MISC_VOLTAGE_PROBE_LOCATION;\r
-\r
-typedef struct {\r
-  STRING_REF                      VoltageProbeDescription;\r
-  EFI_MISC_VOLTAGE_PROBE_LOCATION VoltageProbeLocation;\r
-  EFI_EXP_BASE10_DATA             VoltageProbeMaximumValue;\r
-  EFI_EXP_BASE10_DATA             VoltageProbeMinimumValue;\r
-  EFI_EXP_BASE10_DATA             VoltageProbeResolution;\r
-  EFI_EXP_BASE10_DATA             VoltageProbeTolerance;\r
-  EFI_EXP_BASE10_DATA             VoltageProbeAccuracy;\r
-  EFI_EXP_BASE10_DATA             VoltageProbeNominalValue;\r
-  EFI_EXP_BASE10_DATA             MDLowerNoncriticalThreshold;\r
-  EFI_EXP_BASE10_DATA             MDUpperNoncriticalThreshold;\r
-  EFI_EXP_BASE10_DATA             MDLowerCriticalThreshold;\r
-  EFI_EXP_BASE10_DATA             MDUpperCriticalThreshold;\r
-  EFI_EXP_BASE10_DATA             MDLowerNonrecoverableThreshold;\r
-  EFI_EXP_BASE10_DATA             MDUpperNonrecoverableThreshold;\r
-  UINT32                          VoltageProbeOemDefined;\r
-} EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Cooling Device - SMBIOS Type 27\r
-//\r
-#define EFI_MISC_COOLING_DEVICE_TEMP_LINK_RECORD_NUMBER   0x00000015\r
-\r
-typedef struct {\r
-  UINT32 CoolingDevice                 :5;\r
-  UINT32 CoolingDeviceStatus           :3;\r
-  UINT32 Reserved                      :24;\r
-} EFI_MISC_COOLING_DEVICE_TYPE;\r
-\r
-typedef struct {\r
-  EFI_MISC_COOLING_DEVICE_TYPE   CoolingDeviceType;\r
-  EFI_INTER_LINK_DATA            CoolingDeviceTemperatureLink;\r
-  UINT16                         CoolingDeviceUnitGroup;\r
-  EFI_EXP_BASE10_DATA            CoolingDeviceNominalSpeed;\r
-  UINT32                         CoolingDeviceOemDefined;\r
-} EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Temperature Probe - SMBIOS Type 28\r
-//\r
-#define EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_RECORD_NUMBER   0x00000016\r
-\r
-typedef struct {\r
-  UINT32 TemperatureProbeSite          :5;\r
-  UINT32 TemperatureProbeStatus        :3;\r
-  UINT32 Reserved                      :24;\r
-} EFI_MISC_TEMPERATURE_PROBE_LOCATION;\r
-\r
-typedef struct {\r
-  STRING_REF               TemperatureProbeDescription;\r
-  EFI_MISC_TEMPERATURE_PROBE_LOCATION\r
-                           TemperatureProbeLocation;\r
-  EFI_EXP_BASE10_DATA      TemperatureProbeMaximumValue;\r
-  EFI_EXP_BASE10_DATA      TemperatureProbeMinimumValue;\r
-  EFI_EXP_BASE10_DATA      TemperatureProbeResolution;\r
-  EFI_EXP_BASE10_DATA      TemperatureProbeTolerance;\r
-  EFI_EXP_BASE10_DATA      TemperatureProbeAccuracy;\r
-  EFI_EXP_BASE10_DATA      TemperatureProbeNominalValue;\r
-  EFI_EXP_BASE10_DATA      MDLowerNoncriticalThreshold;\r
-  EFI_EXP_BASE10_DATA      MDUpperNoncriticalThreshold;\r
-  EFI_EXP_BASE10_DATA      MDLowerCriticalThreshold;\r
-  EFI_EXP_BASE10_DATA      MDUpperCriticalThreshold;\r
-  EFI_EXP_BASE10_DATA      MDLowerNonrecoverableThreshold;\r
-  EFI_EXP_BASE10_DATA      MDUpperNonrecoverableThreshold;\r
-  UINT32                   TemperatureProbeOemDefined;\r
-} EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Electrical Current Probe - SMBIOS Type 29\r
-//\r
-\r
-#define EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_RECORD_NUMBER  0x00000017\r
-\r
-typedef struct {\r
-  UINT32 ElectricalCurrentProbeSite    :5;\r
-  UINT32 ElectricalCurrentProbeStatus  :3;\r
-  UINT32 Reserved                      :24;\r
-} EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION;\r
-\r
-typedef struct {\r
-  STRING_REF               ElectricalCurrentProbeDescription;\r
-  EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION\r
-                           ElectricalCurrentProbeLocation;\r
-  EFI_EXP_BASE10_DATA      ElectricalCurrentProbeMaximumValue;\r
-  EFI_EXP_BASE10_DATA      ElectricalCurrentProbeMinimumValue;\r
-  EFI_EXP_BASE10_DATA      ElectricalCurrentProbeResolution;\r
-  EFI_EXP_BASE10_DATA      ElectricalCurrentProbeTolerance;\r
-  EFI_EXP_BASE10_DATA      ElectricalCurrentProbeAccuracy;\r
-  EFI_EXP_BASE10_DATA      ElectricalCurrentProbeNominalValue;\r
-  EFI_EXP_BASE10_DATA      MDLowerNoncriticalThreshold;\r
-  EFI_EXP_BASE10_DATA      MDUpperNoncriticalThreshold;\r
-  EFI_EXP_BASE10_DATA      MDLowerCriticalThreshold;\r
-  EFI_EXP_BASE10_DATA      MDUpperCriticalThreshold;\r
-  EFI_EXP_BASE10_DATA      MDLowerNonrecoverableThreshold;\r
-  EFI_EXP_BASE10_DATA      MDUpperNonrecoverableThreshold;\r
-  UINT32                   ElectricalCurrentProbeOemDefined;\r
-} EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Out-of-Band Remote Access - SMBIOS Type 30\r
-//\r
-\r
-#define EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_RECORD_NUMBER  0x00000018\r
-\r
-typedef struct  {\r
-  UINT32 InboundConnectionEnabled            :1;\r
-  UINT32 OutboundConnectionEnabled           :1;\r
-  UINT32 Reserved                            :30;\r
-} EFI_MISC_REMOTE_ACCESS_CONNECTIONS;\r
-\r
-typedef struct {\r
-  STRING_REF                             RemoteAccessManufacturerNameDescription;\r
-  EFI_MISC_REMOTE_ACCESS_CONNECTIONS     RemoteAccessConnections;\r
-} EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Misc. BIS Entry Point - SMBIOS Type 31\r
-//\r
-#define EFI_MISC_BIS_ENTRY_POINT_RECORD_NUMBER          0x00000019\r
-\r
-typedef struct {\r
-  EFI_PHYSICAL_ADDRESS       BisEntryPoint;\r
-} EFI_MISC_BIS_ENTRY_POINT_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Misc. Boot Information - SMBIOS Type 32\r
-//\r
-#define EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER  0x0000001A\r
-\r
-typedef enum {\r
-  EfiBootInformationStatusNoError                  = 0x00,\r
-  EfiBootInformationStatusNoBootableMedia          = 0x01,\r
-  EfiBootInformationStatusNormalOSFailedLoading    = 0x02,\r
-  EfiBootInformationStatusFirmwareDetectedFailure  = 0x03,\r
-  EfiBootInformationStatusOSDetectedFailure        = 0x04,\r
-  EfiBootInformationStatusUserRequestedBoot        = 0x05,\r
-  EfiBootInformationStatusSystemSecurityViolation  = 0x06,\r
-  EfiBootInformationStatusPreviousRequestedImage   = 0x07,\r
-  EfiBootInformationStatusWatchdogTimerExpired     = 0x08,\r
-  EfiBootInformationStatusStartReserved            = 0x09,\r
-  EfiBootInformationStatusStartOemSpecific         = 0x80,\r
-  EfiBootInformationStatusStartProductSpecific     = 0xC0,\r
-} EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE;\r
-\r
-typedef struct {\r
-  EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus;\r
-  UINT8                                      BootInformationData[9];\r
-} EFI_MISC_BOOT_INFORMATION_STATUS_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Management Device - SMBIOS Type 34\r
-//\r
-#define EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_RECORD_NUMBER   0x0000001B\r
-\r
-typedef enum {\r
-  EfiManagementDeviceTypeOther      = 0x01,\r
-  EfiManagementDeviceTypeUnknown    = 0x02,\r
-  EfiManagementDeviceTypeLm75       = 0x03,\r
-  EfiManagementDeviceTypeLm78       = 0x04,\r
-  EfiManagementDeviceTypeLm79       = 0x05,\r
-  EfiManagementDeviceTypeLm80       = 0x06,\r
-  EfiManagementDeviceTypeLm81       = 0x07,\r
-  EfiManagementDeviceTypeAdm9240    = 0x08,\r
-  EfiManagementDeviceTypeDs1780     = 0x09,\r
-  EfiManagementDeviceTypeMaxim1617  = 0x0A,\r
-  EfiManagementDeviceTypeGl518Sm    = 0x0B,\r
-  EfiManagementDeviceTypeW83781D    = 0x0C,\r
-  EfiManagementDeviceTypeHt82H791   = 0x0D,\r
-} EFI_MISC_MANAGEMENT_DEVICE_TYPE;\r
-\r
-typedef enum {\r
-  EfiManagementDeviceAddressTypeOther   = 1,\r
-  EfiManagementDeviceAddressTypeUnknown = 2,\r
-  EfiManagementDeviceAddressTypeIOPort  = 3,\r
-  EfiManagementDeviceAddressTypeMemory  = 4,\r
-  EfiManagementDeviceAddressTypeSmbus   = 5\r
-} EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE;\r
-\r
-typedef struct {\r
-  STRING_REF                       ManagementDeviceDescription;\r
-  EFI_MISC_MANAGEMENT_DEVICE_TYPE  ManagementDeviceType;\r
-  UINTN                            ManagementDeviceAddress;\r
-  EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE\r
-                                   ManagementDeviceAddressType;\r
-} EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Management Device Component - SMBIOS Type 35\r
-//\r
-\r
-#define EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER  0x0000001C\r
-\r
-typedef struct {\r
-  STRING_REF               ManagementDeviceComponentDescription;\r
-  EFI_INTER_LINK_DATA      ManagementDeviceLink;\r
-  EFI_INTER_LINK_DATA      ManagementDeviceComponentLink;\r
-} EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA;\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// IPMI Data Record - SMBIOS Type 38\r
-//\r
-typedef enum {\r
-  EfiIpmiOther = 0,\r
-  EfiIpmiKcs   = 1,\r
-  EfiIpmiSmic  = 2,\r
-  EfiIpmiBt    = 3,\r
-} EFI_MISC_IPMI_INTERFACE_TYPE;\r
-\r
-typedef struct {\r
-  UINT16  IpmiSpecLeastSignificantDigit:4;\r
-  UINT16  IpmiSpecMostSignificantDigit: 4;\r
-  UINT16  Reserved:                     8;\r
-} EFI_MISC_IPMI_SPECIFICATION_REVISION;\r
-\r
-typedef struct {\r
-  EFI_MISC_IPMI_INTERFACE_TYPE          IpmiInterfaceType;\r
-  EFI_MISC_IPMI_SPECIFICATION_REVISION  IpmiSpecificationRevision;\r
-  UINT16                                IpmiI2CSlaveAddress;\r
-  UINT16                                IpmiNvDeviceAddress;\r
-  UINT64                                IpmiBaseAddress;\r
-  EFI_DEVICE_PATH_PROTOCOL              IpmiDevicePath;\r
-} EFI_MISC_IPMI_INTERFACE_TYPE_DATA;\r
-\r
-#define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER  0x0000001D\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-//System Power supply Record - SMBIOS Type 39\r
-//\r
-typedef struct {\r
-  UINT16  PowerSupplyHotReplaceable  :1;\r
-  UINT16  PowerSupplyPresent         :1;\r
-  UINT16  PowerSupplyUnplugged       :1;\r
-  UINT16  InputVoltageRangeSwitch    :4;\r
-  UINT16  PowerSupplyStatus          :3;\r
-  UINT16  PowerSupplyType            :4;\r
-  UINT16  Reserved                   :2;\r
-} POWER_SUPPLY_CHARACTERISTICS;\r
-\r
-typedef struct {\r
-  UINT16                          PowerUnitGroup;\r
-  STRING_REF                      PowerSupplyLocation;\r
-  STRING_REF                      PowerSupplyDeviceName;\r
-  STRING_REF                      PowerSupplyManufacturer;\r
-  STRING_REF                      PowerSupplySerialNumber;\r
-  STRING_REF                      PowerSupplyAssetTagNumber;\r
-  STRING_REF                      PowerSupplyModelPartNumber;\r
-  STRING_REF                      PowerSupplyRevisionLevel;\r
-  UINT16                          PowerSupplyMaxPowerCapacity;\r
-  POWER_SUPPLY_CHARACTERISTICS    PowerSupplyCharacteristics;\r
-  EFI_INTER_LINK_DATA             PowerSupplyInputVoltageProbeLink;\r
-  EFI_INTER_LINK_DATA             PowerSupplyCoolingDeviceLink;\r
-  EFI_INTER_LINK_DATA             PowerSupplyInputCurrentProbeLink;\r
-} EFI_MISC_SYSTEM_POWER_SUPPLY_DATA;\r
-\r
-#define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER 0x0000001E\r
-\r
-//\r
-//////////////////////////////////////////////////////////////////////////////\r
-//\r
-// OEM Data Record - SMBIOS Type 0x80-0xFF\r
-//\r
-typedef struct {\r
-  UINT8       Type;\r
-  UINT8       Length;\r
-  UINT16      Handle;\r
-} SMBIOS_STRUCTURE_HDR;\r
-\r
-typedef struct {\r
-  SMBIOS_STRUCTURE_HDR          Header;\r
-  UINT8                         RawData[1];\r
-} EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA;\r
-\r
-#define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER  0x0000001F\r
-\r
-//\r
-// Declare the following strutures alias to use them more conviniently.\r
-//\r
-typedef EFI_MISC_LAST_PCI_BUS_DATA                        EFI_MISC_LAST_PCI_BUS;\r
-typedef EFI_MISC_BIOS_VENDOR_DATA                         EFI_MISC_BIOS_VENDOR;\r
-typedef EFI_MISC_SYSTEM_MANUFACTURER_DATA                 EFI_MISC_SYSTEM_MANUFACTURER;\r
-typedef EFI_MISC_BASE_BOARD_MANUFACTURER_DATA             EFI_MISC_BASE_BOARD_MANUFACTURER;\r
-typedef EFI_MISC_CHASSIS_MANUFACTURER_DATA                EFI_MISC_CHASSIS_MANUFACTURER;\r
-typedef EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA  EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR;\r
-typedef EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA             EFI_MISC_SYSTEM_SLOT_DESIGNATION;\r
-typedef EFI_MISC_ONBOARD_DEVICE_DATA                      EFI_MISC_ONBOARD_DEVICE;\r
-typedef EFI_MISC_PORTING_DEVICE_TYPE_DATA                 EFI_MISC_ONBOARD_DEVICE_TYPE_DATA;\r
-typedef EFI_MISC_OEM_STRING_DATA                          EFI_MISC_OEM_STRING;\r
-typedef EFI_MISC_SYSTEM_OPTION_STRING_DATA                EFI_MISC_SYSTEM_OPTION_STRING;\r
-typedef EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA     EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES;\r
-typedef EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA              EFI_MISC_SYSTEM_LANGUAGE_STRING;\r
-typedef EFI_MISC_SYSTEM_EVENT_LOG_DATA                    EFI_MISC_SYSTEM_EVENT_LOG;\r
-typedef EFI_MISC_BIS_ENTRY_POINT_DATA                     EFI_MISC_BIS_ENTRY_POINT;\r
-typedef EFI_MISC_BOOT_INFORMATION_STATUS_DATA             EFI_MISC_BOOT_INFORMATION_STATUS;\r
-typedef EFI_MISC_SYSTEM_POWER_SUPPLY_DATA                 EFI_MISC_SYSTEM_POWER_SUPPLY;\r
-typedef EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA         EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION;\r
-\r
-typedef union {\r
-  EFI_MISC_LAST_PCI_BUS_DATA                         LastPciBus;\r
-  EFI_MISC_BIOS_VENDOR_DATA                          MiscBiosVendor;\r
-  EFI_MISC_SYSTEM_MANUFACTURER_DATA                  MiscSystemManufacturer;\r
-  EFI_MISC_BASE_BOARD_MANUFACTURER_DATA              MiscBaseBoardManufacturer;\r
-  EFI_MISC_CHASSIS_MANUFACTURER_DATA                 MiscChassisManufacturer;\r
-  EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA   MiscPortInternalConnectorDesignator;\r
-  EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA              MiscSystemSlotDesignation;\r
-  EFI_MISC_ONBOARD_DEVICE_DATA                       MiscOnboardDevice;\r
-  EFI_MISC_OEM_STRING_DATA                           MiscOemString;\r
-  EFI_MISC_SYSTEM_OPTION_STRING_DATA                 MiscOptionString;\r
-  EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA      NumberOfInstallableLanguages;\r
-  EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA               MiscSystemLanguageString;\r
-  EFI_MISC_SYSTEM_EVENT_LOG_DATA                     MiscSystemEventLog;\r
-  EFI_MISC_GROUP_NAME_DATA                           MiscGroupNameData;\r
-  EFI_MISC_GROUP_ITEM_SET_DATA                       MiscGroupItemSetData;\r
-  EFI_MISC_PORTING_DEVICE_TYPE_DATA                  MiscPortingDeviceTypeData;\r
-  EFI_MISC_RESET_CAPABILITIES_DATA                   MiscResetCapablilitiesData;\r
-  EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA           MiscHardwareSecuritySettingsData;\r
-  EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA             MiscScheduledPowerOnMonthData;\r
-  EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA            MiscVoltagePorbeDescriptionData;\r
-  EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA             MiscCoolingDeviceTempLinkData;\r
-  EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA        MiscTemperatureProbeDescriptionData;\r
-  EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA MiscElectricalCurrentProbeDescriptionData;\r
-  EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA\r
-                                                     MiscRemoteAccessManufacturerDescriptionData;\r
-  EFI_MISC_BIS_ENTRY_POINT_DATA                      MiscBisEntryPoint;\r
-  EFI_MISC_BOOT_INFORMATION_STATUS_DATA              MiscBootInformationStatus;\r
-  EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA        MiscMangementDeviceDescriptionData;\r
-  EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA\r
-                                                     MiscmangementDeviceComponentDescriptionData;\r
-  EFI_MISC_IPMI_INTERFACE_TYPE_DATA                  MiscIpmiInterfaceTypeData;\r
-  EFI_MISC_SYSTEM_POWER_SUPPLY_DATA                  MiscPowerSupplyInfo;\r
-  EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA          MiscSmbiosStructEncapsulation;\r
-} EFI_MISC_SUBCLASS_RECORDS;\r
-\r
-//\r
-//\r
-//\r
-typedef struct {\r
-  EFI_SUBCLASS_TYPE1_HEADER       Header;\r
-  EFI_MISC_SUBCLASS_RECORDS       Record;\r
-} EFI_MISC_SUBCLASS_DRIVER_DATA;\r
-\r
-#pragma pack()\r
-\r
-//\r
-// Sub Class Header type1\r
-//\r
-\r
-#define EFI_SUBCLASS_INSTANCE_RESERVED       0\r
-#define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF  //16 bit\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Common/FrameworkDxeCis.h b/IntelFrameworkPkg/Include/Common/FrameworkDxeCis.h
deleted file mode 100644 (file)
index 0b7ffdf..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/** @file\r
-  Include file that supportes Framework extension to the EFI 1.10 spec.\r
-\r
-  This include file must only contain things defined in the Framework\r
-  specifications. If a code construct is defined in the Framework specification\r
-  it must be included by this include file.\r
-\r
-  Copyright (c) 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
-  Module Name:    FrameworkDxeCis.h\r
-\r
-**/\r
-\r
-#ifndef _FRAMEWORK_DXE_CIS_H_\r
-#define _FRAMEWORK_DXE_CIS_H_\r
-\r
-#include <PiDxe.h>\r
-#include <Common/FrameworkStatusCode.h>\r
-#include <Protocol/StatusCode.h>\r
-\r
-//\r
-// Function prototype for invoking a function on an Application Processor\r
-// Used by both the SMM infrastructure and the MP Services Protocol\r
-//\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_AP_PROCEDURE) (\r
-  IN  VOID                              *Buffer\r
-  );\r
-\r
-typedef struct {\r
-  EFI_TABLE_HEADER              Hdr;\r
-\r
-  //\r
-  // Time services\r
-  //\r
-  EFI_GET_TIME                  GetTime;\r
-  EFI_SET_TIME                  SetTime;\r
-  EFI_GET_WAKEUP_TIME           GetWakeupTime;\r
-  EFI_SET_WAKEUP_TIME           SetWakeupTime;\r
-\r
-  //\r
-  // Virtual memory services\r
-  //\r
-  EFI_SET_VIRTUAL_ADDRESS_MAP   SetVirtualAddressMap;\r
-  EFI_CONVERT_POINTER           ConvertPointer;\r
-\r
-  //\r
-  // Variable services\r
-  //\r
-  EFI_GET_VARIABLE              GetVariable;\r
-  EFI_GET_NEXT_VARIABLE_NAME    GetNextVariableName;\r
-  EFI_SET_VARIABLE              SetVariable;\r
-\r
-  //\r
-  // Misc\r
-  //\r
-  EFI_GET_NEXT_HIGH_MONO_COUNT  GetNextHighMonotonicCount;\r
-  EFI_RESET_SYSTEM              ResetSystem;\r
-\r
-  //\r
-  // Framework extension to EFI 1.10 runtime table\r
-  // It was moved to a protocol to not conflict with UEFI 2.0\r
-  //\r
-  EFI_REPORT_STATUS_CODE        ReportStatusCode;\r
-} FRAMEWORK_EFI_RUNTIME_SERVICES;\r
-\r
-#define EFI_EVENT_RUNTIME_CONTEXT       0x20000000\r
-#define EFI_EVENT_NOTIFY_SIGNAL_ALL     0x00000400\r
-#define EFI_EVENT_SIGNAL_READY_TO_BOOT  0x00000203\r
-#define EFI_EVENT_SIGNAL_LEGACY_BOOT    0x00000204\r
-\r
-\r
-typedef struct {\r
-  EFI_DEVICE_PATH_PROTOCOL  Header;\r
-  EFI_GUID                  TianoSpecificDevicePath;\r
-  UINT32                    Type;\r
-} TIANO_DEVICE_PATH;\r
-\r
-#define TIANO_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH_TYPE         0x01\r
-typedef struct {\r
-  TIANO_DEVICE_PATH     Tiano;\r
-  EFI_GUID              NameGuid;\r
-} FRAMEWORK_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH;\r
-\r
-\r
-//\r
-// Function prototype for invoking a function on an Application Processor\r
-// Used by both the SMM infrastructure and the MP Services Protocol\r
-//\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_AP_PROCEDURE) (\r
-  IN  VOID                              *Buffer\r
-  );\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Common/FrameworkFirmwareFileSystem.h b/IntelFrameworkPkg/Include/Common/FrameworkFirmwareFileSystem.h
deleted file mode 100644 (file)
index c0acbc9..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/** @file\r
-  This file defines the data structures that comprise the FFS file system.\r
-\r
-  Copyright (c) 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
-  Module Name:  FrameworkFirmwareFileSystem.h\r
-\r
-  @par Revision Reference:\r
-  These definitions are from Firmware File System Spec 0.9 but not in PI specs.\r
-\r
-**/\r
-\r
-#ifndef _FRAMEWORK_FIRMWARE_FILE_SYSTEM_H_\r
-#define _FRAMEWORK_FIRMWARE_FILE_SYSTEM_H_\r
-\r
-#include <PiPei.h>\r
-\r
-typedef UINT16                      EFI_FFS_FILE_TAIL;\r
-\r
-#define FFS_ATTRIB_TAIL_PRESENT     0x01\r
-#define FFS_ATTRIB_RECOVERY         0x02\r
-#define FFS_ATTRIB_HEADER_EXTENSION 0x04\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Common/FrameworkFirmwareVolumeHeader.h b/IntelFrameworkPkg/Include/Common/FrameworkFirmwareVolumeHeader.h
deleted file mode 100644 (file)
index 1f584fe..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/** @file\r
-  Defines data structure that is the volume header found at the beginning of\r
-  all firmware volumes that are either memory mapped, or have an\r
-  associated FirmwareVolumeBlock protocol.\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:  FirmwareVolumeHeader.h\r
-\r
-  @par Revision Reference:\r
-  These definitions are from Firmware Volume Block Spec 0.9.\r
-\r
-**/\r
-\r
-#ifndef __EFI_FIRMWARE_VOLUME_HEADER_H__\r
-#define __EFI_FIRMWARE_VOLUME_HEADER_H__\r
-\r
-//\r
-// Firmware Volume Block Attributes definition\r
-//\r
-typedef UINT32  EFI_FVB_ATTRIBUTES;\r
-\r
-//\r
-// Firmware Volume Block Attributes bit definitions\r
-//\r
-#define EFI_FVB_READ_DISABLED_CAP   0x00000001\r
-#define EFI_FVB_READ_ENABLED_CAP    0x00000002\r
-#define EFI_FVB_READ_STATUS         0x00000004\r
-\r
-#define EFI_FVB_WRITE_DISABLED_CAP  0x00000008\r
-#define EFI_FVB_WRITE_ENABLED_CAP   0x00000010\r
-#define EFI_FVB_WRITE_STATUS        0x00000020\r
-\r
-#define EFI_FVB_LOCK_CAP            0x00000040\r
-#define EFI_FVB_LOCK_STATUS         0x00000080\r
-\r
-#define EFI_FVB_STICKY_WRITE        0x00000200\r
-#define EFI_FVB_MEMORY_MAPPED       0x00000400\r
-#define EFI_FVB_ERASE_POLARITY      0x00000800\r
-\r
-#define EFI_FVB_ALIGNMENT_CAP       0x00008000\r
-#define EFI_FVB_ALIGNMENT_2         0x00010000\r
-#define EFI_FVB_ALIGNMENT_4         0x00020000\r
-#define EFI_FVB_ALIGNMENT_8         0x00040000\r
-#define EFI_FVB_ALIGNMENT_16        0x00080000\r
-#define EFI_FVB_ALIGNMENT_32        0x00100000\r
-#define EFI_FVB_ALIGNMENT_64        0x00200000\r
-#define EFI_FVB_ALIGNMENT_128       0x00400000\r
-#define EFI_FVB_ALIGNMENT_256       0x00800000\r
-#define EFI_FVB_ALIGNMENT_512       0x01000000\r
-#define EFI_FVB_ALIGNMENT_1K        0x02000000\r
-#define EFI_FVB_ALIGNMENT_2K        0x04000000\r
-#define EFI_FVB_ALIGNMENT_4K        0x08000000\r
-#define EFI_FVB_ALIGNMENT_8K        0x10000000\r
-#define EFI_FVB_ALIGNMENT_16K       0x20000000\r
-#define EFI_FVB_ALIGNMENT_32K       0x40000000\r
-#define EFI_FVB_ALIGNMENT_64K       0x80000000\r
-\r
-#define EFI_FVB_CAPABILITIES  (EFI_FVB_READ_DISABLED_CAP | \\r
-                              EFI_FVB_READ_ENABLED_CAP | \\r
-                              EFI_FVB_WRITE_DISABLED_CAP | \\r
-                              EFI_FVB_WRITE_ENABLED_CAP | \\r
-                              EFI_FVB_LOCK_CAP \\r
-                              )\r
-\r
-#define EFI_TEST_FFS_ATTRIBUTES_BIT(FvbAttributes, TestAttributes, Bit) \\r
-    ( \\r
-      (BOOLEAN) ( \\r
-          (FvbAttributes & EFI_FVB_ERASE_POLARITY) ? (((~TestAttributes) & Bit) == Bit) : ((TestAttributes & Bit) == Bit) \\r
-        ) \\r
-    )\r
-\r
-#define EFI_FVB_STATUS    (EFI_FVB_READ_STATUS | EFI_FVB_WRITE_STATUS | EFI_FVB_LOCK_STATUS)\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Common/FrameworkFirmwareVolumeImageFormat.h b/IntelFrameworkPkg/Include/Common/FrameworkFirmwareVolumeImageFormat.h
deleted file mode 100644 (file)
index 9b4e3b6..0000000
+++ /dev/null
@@ -1,43 +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:  FrameworkFimrwareVolumeImageFormat.h\r
-\r
-  @par Revision Reference:\r
-  These definitions are from Firmware Volume Spec 0.9.\r
-\r
-**/\r
-\r
-#ifndef __FRAMEWORK_FIRMWARE_VOLUME_IMAGE_FORMAT_H__\r
-#define __FRAMEWORK_FIRMWARE_VOLUME_IMAGE_FORMAT_H__\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
-#define EFI_FV_FILETYPE_ALL                         0x00\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Common/FrameworkHob.h b/IntelFrameworkPkg/Include/Common/FrameworkHob.h
deleted file mode 100644 (file)
index cdc419d..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/** @file\r
-  This file defines the data structures per HOB specification v0.9.\r
-\r
-  Copyright (c) 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
-  Module Name:  FrameworkFirmwareFileSystem.h\r
-\r
-  @par Revision Reference:\r
-  These definitions are from HOB Spec 0.9 but not adopted by PI specs.\r
-\r
-**/\r
-\r
-#ifndef _FRAMEWORK_HOB_H_\r
-#define _FRAMEWORK_HOB_H_\r
-\r
-#include <PiPei.h>\r
-\r
-//\r
-// Capsule volume HOB -- identical to a firmware volume\r
-//\r
-#define EFI_HOB_TYPE_CV 0x0008\r
-\r
-typedef struct {\r
-  EFI_HOB_GENERIC_HEADER  Header;\r
-  EFI_PHYSICAL_ADDRESS    BaseAddress;\r
-  UINT64                  Length;\r
-} EFI_HOB_CAPSULE_VOLUME;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Common/FrameworkLegacy16.h b/IntelFrameworkPkg/Include/Common/FrameworkLegacy16.h
deleted file mode 100644 (file)
index 7f80c8a..0000000
+++ /dev/null
@@ -1,431 +0,0 @@
-/** @file\r
-  API between 16-bit Legacy BIOS and EFI\r
-\r
-  We need to figure out what the 16-bit code is going to use to\r
-  represent these data structures. Is a pointer SEG:OFF or 32-bit...\r
-\r
-  Copyright (c) 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
-  Module Name:  FrameworkLegacy16.h\r
-\r
-  @par Revision Reference:\r
-  These definitions are from Compatibility Support Module Spec Version 0.96.\r
-\r
-**/\r
-\r
-#ifndef _FRAMEWORK_LEGACY_16_H_\r
-#define _FRAMEWORK_LEGACY_16_H_\r
-\r
-#include <Base.h>\r
-\r
-//\r
-// All structures defined in this header file are packed on byte boundary\r
-//\r
-#pragma pack(1)\r
-\r
-typedef UINT8 SERIAL_MODE;\r
-typedef UINT8 PARALLEL_MODE;\r
-\r
-///////////////////////////////////////////////////////////////////////////////\r
-// EFI_COMPATIBILITY16_TABLE is located at a 16-byte boundary starting with the\r
-// signature "$EFI"\r
-///////////////////////////////////////////////////////////////////////////////\r
-\r
-#define EFI_COMPATIBILITY16_TABLE_SIGNATURE EFI_SIGNATURE_32('$', 'E', 'F', 'I')\r
-\r
-typedef struct {\r
-  UINT32  Signature;      // "$EFI"\r
-  UINT8   TableChecksum;\r
-  UINT8   TableLength;\r
-  UINT8   EfiMajorRevision;\r
-  UINT8   EfiMinorRevision;\r
-  UINT8   TableMajorRevision;\r
-  UINT8   TableMinorRevision;\r
-  UINT16  Reserved;\r
-  UINT16  Compatibility16CallSegment;\r
-  UINT16  Compatibility16CallOffset;\r
-  UINT16  PnPInstallationCheckSegment;\r
-  UINT16  PnPInstallationCheckOffset;\r
-  UINT32  EfiSystemTable; // The physical address of EFI_SYSTEM_TABLE\r
-  UINT32  OemIdStringPointer;\r
-  UINT32  AcpiRsdPtrPointer;\r
-  UINT16  OemRevision;\r
-  UINT32  E820Pointer;\r
-  UINT32  E820Length;\r
-  UINT32  IrqRoutingTablePointer;\r
-  UINT32  IrqRoutingTableLength;\r
-  UINT32  MpTablePtr;\r
-  UINT32  MpTableLength;\r
-  UINT16  OemIntSegment;\r
-  UINT16  OemIntOffset;\r
-  UINT16  Oem32Segment;\r
-  UINT16  Oem32Offset;\r
-  UINT16  Oem16Segment;\r
-  UINT16  Oem16Offset;\r
-  UINT16  TpmSegment;\r
-  UINT16  TpmOffset;\r
-  UINT32  IbvPointer;\r
-  UINT32  PciExpressBase;\r
-  UINT8   LastPciBus;\r
-} EFI_COMPATIBILITY16_TABLE;\r
-\r
-///////////////////////////////////////////////////////////////////////////////\r
-// Functions provided by the CSM binary\r
-///////////////////////////////////////////////////////////////////////////////\r
-typedef enum {\r
-  Legacy16InitializeYourself    = 0x0000,\r
-  Legacy16UpdateBbs             = 0x0001,\r
-  Legacy16PrepareToBoot         = 0x0002,\r
-  Legacy16Boot                  = 0x0003,\r
-  Legacy16RetrieveLastBootDevice= 0x0004,\r
-  Legacy16DispatchOprom         = 0x0005,\r
-  Legacy16GetTableAddress       = 0x0006,\r
-  Legacy16SetKeyboardLeds       = 0x0007,\r
-  Legacy16InstallPciHandler     = 0x0008\r
-} EFI_COMPATIBILITY_FUNCTIONS;\r
-\r
-///////////////////////////////////////////////////////////////////////////////\r
-// EFI_TO_COMPATIBILITY16_INIT_TABLE\r
-///////////////////////////////////////////////////////////////////////////////\r
-typedef struct {\r
-  UINT32  BiosLessThan1MB;\r
-  UINT32  HiPmmMemory;\r
-  UINT32  HiPmmMemorySizeInBytes;\r
-  UINT16  ReverseThunkCallSegment;\r
-  UINT16  ReverseThunkCallOffset;\r
-  UINT32  NumberE820Entries;\r
-  UINT32  OsMemoryAbove1Mb;\r
-  UINT32  ThunkStart;\r
-  UINT32  ThunkSizeInBytes;\r
-  UINT32  LowPmmMemory;\r
-  UINT32  LowPmmMemorySizeInBytes;\r
-} EFI_TO_COMPATIBILITY16_INIT_TABLE;\r
-\r
-///////////////////////////////////////////////////////////////////////////////\r
-// EFI_TO_COMPATIBILITY16_BOOT_TABLE\r
-///////////////////////////////////////////////////////////////////////////////\r
-\r
-typedef UINT8 SERIAL_MODE;\r
-typedef UINT8 PARALLEL_MODE;\r
-\r
-//\r
-// DEVICE_PRODUCER_SERIAL & its modes\r
-//\r
-typedef struct {\r
-  UINT16      Address;\r
-  UINT8       Irq;\r
-  SERIAL_MODE Mode;\r
-} DEVICE_PRODUCER_SERIAL;\r
-\r
-#define DEVICE_SERIAL_MODE_NORMAL               0x00\r
-#define DEVICE_SERIAL_MODE_IRDA                 0x01\r
-#define DEVICE_SERIAL_MODE_ASK_IR               0x02\r
-#define DEVICE_SERIAL_MODE_DUPLEX_HALF          0x00\r
-#define DEVICE_SERIAL_MODE_DUPLEX_FULL          0x10\r
-\r
-//\r
-// DEVICE_PRODUCER_PARALLEL & its modes\r
-//\r
-typedef struct {\r
-  UINT16        Address;\r
-  UINT8         Irq;\r
-  UINT8         Dma;\r
-  PARALLEL_MODE Mode;\r
-} DEVICE_PRODUCER_PARALLEL;\r
-\r
-#define DEVICE_PARALLEL_MODE_MODE_OUTPUT_ONLY   0x00\r
-#define DEVICE_PARALLEL_MODE_MODE_BIDIRECTIONAL 0x01\r
-#define DEVICE_PARALLEL_MODE_MODE_EPP           0x02\r
-#define DEVICE_PARALLEL_MODE_MODE_ECP           0x03\r
-\r
-//\r
-// DEVICE_PRODUCER_FLOPPY\r
-//\r
-typedef struct {\r
-  UINT16  Address;\r
-  UINT8   Irq;\r
-  UINT8   Dma;\r
-  UINT8   NumberOfFloppy;\r
-} DEVICE_PRODUCER_FLOPPY;\r
-\r
-//\r
-// LEGACY_DEVICE_FLAGS\r
-//\r
-typedef struct {\r
-  UINT32  A20Kybd : 1;\r
-  UINT32  A20Port90 : 1;\r
-  UINT32  Reserved : 30;\r
-} LEGACY_DEVICE_FLAGS;\r
-\r
-//\r
-// DEVICE_PRODUCER_DATA_HEADER\r
-//\r
-typedef struct {\r
-  DEVICE_PRODUCER_SERIAL    Serial[4];\r
-  DEVICE_PRODUCER_PARALLEL  Parallel[3];\r
-  DEVICE_PRODUCER_FLOPPY    Floppy;\r
-  UINT8                     MousePresent;\r
-  LEGACY_DEVICE_FLAGS       Flags;\r
-} DEVICE_PRODUCER_DATA_HEADER;\r
-\r
-//\r
-// ATAPI_IDENTIFY\r
-//\r
-typedef struct {\r
-  UINT16  Raw[256];\r
-} ATAPI_IDENTIFY;\r
-\r
-//\r
-// HDD_INFO & its status\r
-//\r
-typedef struct {\r
-  UINT16          Status;\r
-  UINT32          Bus;\r
-  UINT32          Device;\r
-  UINT32          Function;\r
-  UINT16          CommandBaseAddress;\r
-  UINT16          ControlBaseAddress;\r
-  UINT16          BusMasterAddress;\r
-  UINT8           HddIrq;\r
-  ATAPI_IDENTIFY  IdentifyDrive[2];\r
-} HDD_INFO;\r
-\r
-#define HDD_PRIMARY               0x01\r
-#define HDD_SECONDARY             0x02\r
-#define HDD_MASTER_ATAPI_CDROM    0x04\r
-#define HDD_SLAVE_ATAPI_CDROM     0x08\r
-#define HDD_MASTER_IDE            0x20\r
-#define HDD_SLAVE_IDE             0x40\r
-#define HDD_MASTER_ATAPI_ZIPDISK  0x10\r
-#define HDD_SLAVE_ATAPI_ZIPDISK   0x80\r
-\r
-//\r
-// BBS_STATUS_FLAGS\r
-//\r
-typedef struct {\r
-  UINT16  OldPosition : 4;\r
-  UINT16  Reserved1 : 4;\r
-  UINT16  Enabled : 1;\r
-  UINT16  Failed : 1;\r
-  UINT16  MediaPresent : 2;\r
-  UINT16  Reserved2 : 4;\r
-} BBS_STATUS_FLAGS;\r
-\r
-//\r
-// BBS_TABLE, device type values & boot priority values\r
-//\r
-typedef struct {\r
-  UINT16            BootPriority;\r
-  UINT32            Bus;\r
-  UINT32            Device;\r
-  UINT32            Function;\r
-  UINT8             Class;\r
-  UINT8             SubClass;\r
-  UINT16            MfgStringOffset;\r
-  UINT16            MfgStringSegment;\r
-  UINT16            DeviceType;\r
-  BBS_STATUS_FLAGS  StatusFlags;\r
-  UINT16            BootHandlerOffset;\r
-  UINT16            BootHandlerSegment;\r
-  UINT16            DescStringOffset;\r
-  UINT16            DescStringSegment;\r
-  UINT32            InitPerReserved;\r
-  UINT32            AdditionalIrq13Handler;\r
-  UINT32            AdditionalIrq18Handler;\r
-  UINT32            AdditionalIrq19Handler;\r
-  UINT32            AdditionalIrq40Handler;\r
-  UINT8             AssignedDriveNumber;\r
-  UINT32            AdditionalIrq41Handler;\r
-  UINT32            AdditionalIrq46Handler;\r
-  UINT32            IBV1;\r
-  UINT32            IBV2;\r
-} BBS_TABLE;\r
-\r
-#define BBS_FLOPPY        0x01\r
-#define BBS_HARDDISK      0x02\r
-#define BBS_CDROM         0x03\r
-#define BBS_PCMCIA        0x04\r
-#define BBS_USB           0x05\r
-#define BBS_EMBED_NETWORK 0x06\r
-#define BBS_BEV_DEVICE    0x80\r
-#define BBS_UNKNOWN       0xff\r
-\r
-#define BBS_DO_NOT_BOOT_FROM    0xFFFC\r
-#define BBS_LOWEST_PRIORITY     0xFFFD\r
-#define BBS_UNPRIORITIZED_ENTRY 0xFFFE\r
-#define BBS_IGNORE_ENTRY        0xFFFF\r
-\r
-//\r
-// SMM_ATTRIBUTES & relating type, port and data size constants\r
-//\r
-typedef struct {\r
-  UINT16  Type : 3;\r
-  UINT16  PortGranularity : 3;\r
-  UINT16  DataGranularity : 3;\r
-  UINT16  Reserved : 7;\r
-} SMM_ATTRIBUTES;\r
-\r
-#define STANDARD_IO       0x00\r
-#define STANDARD_MEMORY   0x01\r
-\r
-#define PORT_SIZE_8       0x00\r
-#define PORT_SIZE_16      0x01\r
-#define PORT_SIZE_32      0x02\r
-#define PORT_SIZE_64      0x03\r
-\r
-#define DATA_SIZE_8       0x00\r
-#define DATA_SIZE_16      0x01\r
-#define DATA_SIZE_32      0x02\r
-#define DATA_SIZE_64      0x03\r
-\r
-//\r
-// SMM_FUNCTION & relating constants\r
-//\r
-typedef struct {\r
-  UINT16  Function : 15;\r
-  UINT16  Owner : 1;\r
-} SMM_FUNCTION;\r
-\r
-#define INT15_D042        0x0000\r
-#define GET_USB_BOOT_INFO 0x0001\r
-#define DMI_PNP_50_57     0x0002\r
-\r
-#define STANDARD_OWNER    0x0\r
-#define OEM_OWNER         0x1\r
-\r
-//\r
-// SMM_ENTRY\r
-//\r
-// This structure assumes both port and data sizes are 1. SmmAttribute must be\r
-// properly to reflect that assumption.\r
-//\r
-typedef struct {\r
-  SMM_ATTRIBUTES  SmmAttributes;\r
-  SMM_FUNCTION    SmmFunction;\r
-  UINT8           SmmPort;\r
-  UINT8           SmmData;\r
-} SMM_ENTRY;\r
-\r
-//\r
-// SMM_TABLE\r
-//\r
-typedef struct {\r
-  UINT16    NumSmmEntries;\r
-  SMM_ENTRY SmmEntry;\r
-} SMM_TABLE;\r
-\r
-//\r
-// UDC_ATTRIBUTES\r
-//\r
-typedef struct {\r
-  UINT8 DirectoryServiceValidity : 1;\r
-  UINT8 RabcaUsedFlag : 1;\r
-  UINT8 ExecuteHddDiagnosticsFlag : 1;\r
-  UINT8 Reserved : 5;\r
-} UDC_ATTRIBUTES;\r
-\r
-//\r
-// UD_TABLE\r
-//\r
-typedef struct {\r
-  UDC_ATTRIBUTES  Attributes;\r
-  UINT8           DeviceNumber;\r
-  UINT8           BbsTableEntryNumberForParentDevice;\r
-  UINT8           BbsTableEntryNumberForBoot;\r
-  UINT8           BbsTableEntryNumberForHddDiag;\r
-  UINT8           BeerData[128];\r
-  UINT8           ServiceAreaData[64];\r
-} UD_TABLE;\r
-\r
-//\r
-// EFI_TO_COMPATIBILITY16_BOOT_TABLE\r
-//\r
-#define EFI_TO_LEGACY_MAJOR_VERSION 0x02\r
-#define EFI_TO_LEGACY_MINOR_VERSION 0x00\r
-#define MAX_IDE_CONTROLLER          8\r
-\r
-typedef struct {\r
-  UINT16                      MajorVersion;\r
-  UINT16                      MinorVersion;\r
-  UINT32                      AcpiTable;   // 4 GB range\r
-  UINT32                      SmbiosTable; // 4 GB range\r
-  UINT32                      SmbiosTableLength;\r
-\r
-  //\r
-  // Legacy SIO state\r
-  //\r
-  DEVICE_PRODUCER_DATA_HEADER SioData;\r
-\r
-  UINT16                      DevicePathType;\r
-  UINT16                      PciIrqMask;\r
-  UINT32                      NumberE820Entries;\r
-\r
-  //\r
-  // Controller & Drive Identify[2] per controller information\r
-  //\r
-  HDD_INFO                    HddInfo[MAX_IDE_CONTROLLER];\r
-\r
-  UINT32                      NumberBbsEntries;\r
-  UINT32                      BbsTable;\r
-  UINT32                      SmmTable;\r
-  UINT32                      OsMemoryAbove1Mb;\r
-  UINT32                      UnconventionalDeviceTable;\r
-} EFI_TO_COMPATIBILITY16_BOOT_TABLE;\r
-\r
-///////////////////////////////////////////////////////////////////////////////\r
-// EFI_DISPATCH_OPROM_TABLE\r
-///////////////////////////////////////////////////////////////////////////////\r
-\r
-typedef struct {\r
-  UINT16  PnPInstallationCheckSegment;\r
-  UINT16  PnPInstallationCheckOffset;\r
-  UINT16  OpromSegment;\r
-  UINT8   PciBus;\r
-  UINT8   PciDeviceFunction;\r
-  UINT8   NumberBbsEntries;\r
-  VOID    *BbsTablePointer; /// @bug: variable size on 32/64-bit systems.\r
-} EFI_DISPATCH_OPROM_TABLE;\r
-\r
-///////////////////////////////////////////////////////////////////////////////\r
-// EFI_LEGACY_INSTALL_PCI_HANDLER\r
-///////////////////////////////////////////////////////////////////////////////\r
-typedef struct {\r
-  UINT8   PciBus;\r
-  UINT8   PciDeviceFun;\r
-  UINT8   PciSegment;\r
-  UINT8   PciClass;\r
-  UINT8   PciSubclass;\r
-  UINT8   PciInterface;\r
-\r
-  //\r
-  // Primary section\r
-  //\r
-  UINT8   PrimaryIrq;\r
-  UINT8   PrimaryReserved;\r
-  UINT16  PrimaryControl;\r
-  UINT16  PrimaryBase;\r
-  UINT16  PrimaryBusMaster;\r
-\r
-  //\r
-  // Secondary Section\r
-  //\r
-  UINT8   SecondaryIrq;\r
-  UINT8   SecondaryReserved;\r
-  UINT16  SecondaryControl;\r
-  UINT16  SecondaryBase;\r
-  UINT16  SecondaryBusMaster;\r
-} EFI_LEGACY_INSTALL_PCI_HANDLER;\r
-\r
-//\r
-// Restore default pack value\r
-//\r
-#pragma pack()\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Common/FrameworkSmmCis.h b/IntelFrameworkPkg/Include/Common/FrameworkSmmCis.h
deleted file mode 100644 (file)
index 6fe8e66..0000000
+++ /dev/null
@@ -1,480 +0,0 @@
-/** @file\r
-  Include file matches things in the Smm CIS spec.\r
-\r
-  Copyright (c) 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
-  Module Name:  FrameworkSmmCis.h\r
-\r
-  @par Revision Reference:\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _FRAMEWORK_SMM_CIS_H_\r
-#define _FRAMEWORK_SMM_CIS_H_\r
-\r
-#include <Common/FrameworkDxeCis.h>\r
-\r
-#define EFI_SMM_CPU_IO_GUID \\r
-  { \\r
-    0x5f439a0b, 0x45d8, 0x4682, {0xa4, 0xf4, 0xf0, 0x57, 0x6b, 0x51, 0x34, 0x41 } \\r
-  }\r
-\r
-typedef struct _EFI_SMM_SYSTEM_TABLE      EFI_SMM_SYSTEM_TABLE;\r
-typedef struct _EFI_SMM_CPU_IO_INTERFACE  EFI_SMM_CPU_IO_INTERFACE;\r
-\r
-\r
-//\r
-// SMM Base specification constant and types\r
-//\r
-#define SMM_SMST_SIGNATURE            EFI_SIGNATURE_32 ('S', 'M', 'S', 'T')\r
-#define EFI_SMM_SYSTEM_TABLE_REVISION (0 << 16) | (0x09)\r
-\r
-//\r
-// *******************************************************\r
-// EFI_SMM_IO_WIDTH\r
-// *******************************************************\r
-//\r
-typedef enum {\r
-  SMM_IO_UINT8  = 0,\r
-  SMM_IO_UINT16 = 1,\r
-  SMM_IO_UINT32 = 2,\r
-  SMM_IO_UINT64 = 3\r
-} EFI_SMM_IO_WIDTH;\r
-\r
-/**\r
-  Provides the basic memory and I/O interfaces that are used to\r
-  abstract accesses to devices.\r
-\r
-  @param  This             The EFI_SMM_CPU_IO_INTERFACE instance.\r
-  @param  Width            Signifies the width of the I/O operations.\r
-  @param  Address          The base address of the I/O operations.\r
-  @param  Count            The number of I/O operations to perform.\r
-  @param  Buffer           For read operations, the destination buffer to store the results.\r
-                           For write operations, the source buffer from which to write data.\r
-\r
-  @retval EFI_SUCCESS           The data was read from or written to the device.\r
-  @retval EFI_UNSUPPORTED       The Address is not valid for this system.\r
-  @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.\r
-  @retval EFI_OUT_OF_RESOURCES  The request could not be completed due to a lack of resources.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_CPU_IO) (\r
-  IN EFI_SMM_CPU_IO_INTERFACE         *This,\r
-  IN EFI_SMM_IO_WIDTH                 Width,\r
-  IN UINT64                           Address,\r
-  IN UINTN                            Count,\r
-  IN OUT VOID                         *Buffer\r
-  );\r
-\r
-typedef struct {\r
-  EFI_SMM_CPU_IO  Read;\r
-  EFI_SMM_CPU_IO  Write;\r
-} EFI_SMM_IO_ACCESS;\r
-\r
-struct _EFI_SMM_CPU_IO_INTERFACE {\r
-  EFI_SMM_IO_ACCESS Mem;\r
-  EFI_SMM_IO_ACCESS Io;\r
-};\r
-\r
-/**\r
-  Allocates pool memory from SMRAM for IA-32 or runtime memory for\r
-  the Itanium processor family.\r
-\r
-  @param  PoolType         The type of pool to allocate.The only supported type is EfiRuntimeServicesData\r
-  @param  Size             The number of bytes to allocate from the pool.\r
-  @param  Buffer           A pointer to a pointer to the allocated buffer if the call\r
-                           succeeds; undefined otherwise.\r
-\r
-  @retval EFI_SUCCESS           The requested number of bytes was allocated.\r
-  @retval EFI_OUT_OF_RESOURCES  The pool requested could not be allocated.\r
-  @retval EFI_UNSUPPORTED       In runtime.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMMCORE_ALLOCATE_POOL) (\r
-  IN EFI_MEMORY_TYPE                PoolType,\r
-  IN UINTN                          Size,\r
-  OUT VOID                          **Buffer\r
-  );\r
-\r
-/**\r
-  Returns pool memory to the system.\r
-\r
-  @param  Buffer           Pointer to the buffer to free.\r
-\r
-  @retval EFI_SUCCESS           The memory was returned to the system.\r
-  @retval EFI_INVALID_PARAMETER Buffer was invalid.\r
-  @retval EFI_UNSUPPORTED       In runtime.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMMCORE_FREE_POOL) (\r
-  IN VOID                   *Buffer\r
-  );\r
-\r
-/**\r
-  Allocates memory pages from the system.\r
-\r
-  @param  Type             The type of allocation to perform.\r
-  @param  MemoryType       The only supported type is EfiRuntimeServicesData\r
-  @param  NumberofPages    The number of contiguous 4 KB pages to allocate\r
-  @param  Memory           Pointer to a physical address. On input, the way in which\r
-                           the address is used depends on the value of Type. On output, the address\r
-                           is set to the base of the page range that was allocated.\r
-\r
-  @retval EFI_SUCCESS           The requested pages were allocated.\r
-  @retval EFI_OUT_OF_RESOURCES  The pages requested could not be allocated.\r
-  @retval EFI_NOT_FOUND         The requested pages could not be found.\r
-  @retval EFI_INVALID_PARAMETER Type is not AllocateAnyPages or AllocateMaxAddress\r
-                                or AllocateAddress. Or MemoryType is in the range EfiMaxMemoryType..0x7FFFFFFF.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMMCORE_ALLOCATE_PAGES) (\r
-  IN EFI_ALLOCATE_TYPE      Type,\r
-  IN EFI_MEMORY_TYPE        MemoryType,\r
-  IN UINTN                  NumberOfPages,\r
-  OUT EFI_PHYSICAL_ADDRESS  *Memory\r
-  );\r
-\r
-/**\r
-  Frees memory pages for the system.\r
-\r
-  @param  Memory           The base physical address of the pages to be freed\r
-  @param  NumberOfPages    The number of contiguous 4 KB pages to free.\r
-\r
-  @retval EFI_SUCCESS           The requested memory pages were freed.\r
-  @retval EFI_INVALID_PARAMETER Memory is not a page-aligned address or NumberOfPages is invalid.\r
-  @retval EFI_NOT_FOUND         The requested memory pages were not allocated with SmmAllocatePages().\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMMCORE_FREE_PAGES) (\r
-  IN EFI_PHYSICAL_ADDRESS   Memory,\r
-  IN UINTN                  NumberOfPages\r
-  );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_STARTUP_THIS_AP) (\r
-  IN  EFI_AP_PROCEDURE                    Procedure,\r
-  IN  UINTN                               CpuNumber,\r
-  IN  OUT VOID                            *ProcArguments OPTIONAL\r
-  );\r
-\r
-typedef struct {\r
-  UINT8                 Reserved1[248];\r
-  UINT32                SMBASE;\r
-  UINT32                SMMRevId;\r
-  UINT16                IORestart;\r
-  UINT16                AutoHALTRestart;\r
-  UINT8                 Reserved2[164];\r
-  UINT32                ES;\r
-  UINT32                CS;\r
-  UINT32                SS;\r
-  UINT32                DS;\r
-  UINT32                FS;\r
-  UINT32                GS;\r
-  UINT32                LDTBase;\r
-  UINT32                TR;\r
-  UINT32                DR7;\r
-  UINT32                DR6;\r
-  UINT32                EAX;\r
-  UINT32                ECX;\r
-  UINT32                EDX;\r
-  UINT32                EBX;\r
-  UINT32                ESP;\r
-  UINT32                EBP;\r
-  UINT32                ESI;\r
-  UINT32                EDI;\r
-  UINT32                EIP;\r
-  UINT32                EFLAGS;\r
-  UINT32                CR3;\r
-  UINT32                CR0;\r
-} EFI_SMI_CPU_SAVE_STATE;\r
-\r
-typedef struct {\r
-  UINT64   reserved;\r
-  UINT64   r1;\r
-  UINT64   r2;\r
-  UINT64   r3;\r
-  UINT64   r4;\r
-  UINT64   r5;\r
-  UINT64   r6;\r
-  UINT64   r7;\r
-  UINT64   r8;\r
-  UINT64   r9;\r
-  UINT64   r10;\r
-  UINT64   r11;\r
-  UINT64   r12;\r
-  UINT64   r13;\r
-  UINT64   r14;\r
-  UINT64   r15;\r
-  UINT64   r16;\r
-  UINT64   r17;\r
-  UINT64   r18;\r
-  UINT64   r19;\r
-  UINT64   r20;\r
-  UINT64   r21;\r
-  UINT64   r22;\r
-  UINT64   r23;\r
-  UINT64   r24;\r
-  UINT64   r25;\r
-  UINT64   r26;\r
-  UINT64   r27;\r
-  UINT64   r28;\r
-  UINT64   r29;\r
-  UINT64   r30;\r
-  UINT64   r31;\r
-\r
-  UINT64   pr;\r
-\r
-  UINT64   b0;\r
-  UINT64   b1;\r
-  UINT64   b2;\r
-  UINT64   b3;\r
-  UINT64   b4;\r
-  UINT64   b5;\r
-  UINT64   b6;\r
-  UINT64   b7;\r
-\r
-  // application registers\r
-  UINT64   ar_rsc;\r
-  UINT64   ar_bsp;\r
-  UINT64   ar_bspstore;\r
-  UINT64   ar_rnat;\r
-\r
-  UINT64   ar_fcr;\r
-\r
-  UINT64   ar_eflag;\r
-  UINT64   ar_csd;\r
-  UINT64   ar_ssd;\r
-  UINT64   ar_cflg;\r
-  UINT64   ar_fsr;\r
-  UINT64   ar_fir;\r
-  UINT64   ar_fdr;\r
-\r
-  UINT64   ar_ccv;\r
-\r
-  UINT64   ar_unat;\r
-\r
-  UINT64   ar_fpsr;\r
-\r
-  UINT64   ar_pfs;\r
-  UINT64   ar_lc;\r
-  UINT64   ar_ec;\r
-\r
-  // control registers\r
-  UINT64   cr_dcr;\r
-  UINT64   cr_itm;\r
-  UINT64   cr_iva;\r
-  UINT64   cr_pta;\r
-  UINT64   cr_ipsr;\r
-  UINT64   cr_isr;\r
-  UINT64   cr_iip;\r
-  UINT64   cr_ifa;\r
-  UINT64   cr_itir;\r
-  UINT64   cr_iipa;\r
-  UINT64   cr_ifs;\r
-  UINT64   cr_iim;\r
-  UINT64   cr_iha;\r
-\r
-  // debug registers\r
-  UINT64   dbr0;\r
-  UINT64   dbr1;\r
-  UINT64   dbr2;\r
-  UINT64   dbr3;\r
-  UINT64   dbr4;\r
-  UINT64   dbr5;\r
-  UINT64   dbr6;\r
-  UINT64   dbr7;\r
-\r
-  UINT64   ibr0;\r
-  UINT64   ibr1;\r
-  UINT64   ibr2;\r
-  UINT64   ibr3;\r
-  UINT64   ibr4;\r
-  UINT64   ibr5;\r
-  UINT64   ibr6;\r
-  UINT64   ibr7;\r
-\r
-  // virtual registers\r
-  UINT64   int_nat;         // nat bits for R1-R31\r
-\r
-} EFI_PMI_SYSTEM_CONTEXT;\r
-\r
-typedef union {\r
-  EFI_SMI_CPU_SAVE_STATE     Ia32SaveState;\r
-  EFI_PMI_SYSTEM_CONTEXT     ItaniumSaveState;\r
-} EFI_SMM_CPU_SAVE_STATE;\r
-\r
-typedef struct {\r
-  UINT16                Fcw;\r
-  UINT16                Fsw;\r
-  UINT16                Ftw;\r
-  UINT16                Opcode;\r
-  UINT32                Eip;\r
-  UINT16                Cs;\r
-  UINT16                Rsvd1;\r
-  UINT32                DataOffset;\r
-  UINT16                Ds;\r
-  UINT8                 Rsvd2[10];\r
-  UINT8                 St0Mm0[10], Rsvd3[6];\r
-  UINT8                 St0Mm1[10], Rsvd4[6];\r
-  UINT8                 St0Mm2[10], Rsvd5[6];\r
-  UINT8                 St0Mm3[10], Rsvd6[6];\r
-  UINT8                 St0Mm4[10], Rsvd7[6];\r
-  UINT8                 St0Mm5[10], Rsvd8[6];\r
-  UINT8                 St0Mm6[10], Rsvd9[6];\r
-  UINT8                 St0Mm7[10], Rsvd10[6];\r
-  UINT8                 Rsvd11[22*16];\r
-} EFI_SMI_OPTIONAL_FPSAVE_STATE;\r
-\r
-typedef struct {\r
-  UINT64   f2[2];\r
-  UINT64   f3[2];\r
-  UINT64   f4[2];\r
-  UINT64   f5[2];\r
-  UINT64   f6[2];\r
-  UINT64   f7[2];\r
-  UINT64   f8[2];\r
-  UINT64   f9[2];\r
-  UINT64   f10[2];\r
-  UINT64   f11[2];\r
-  UINT64   f12[2];\r
-  UINT64   f13[2];\r
-  UINT64   f14[2];\r
-  UINT64   f15[2];\r
-  UINT64   f16[2];\r
-  UINT64   f17[2];\r
-  UINT64   f18[2];\r
-  UINT64   f19[2];\r
-  UINT64   f20[2];\r
-  UINT64   f21[2];\r
-  UINT64   f22[2];\r
-  UINT64   f23[2];\r
-  UINT64   f24[2];\r
-  UINT64   f25[2];\r
-  UINT64   f26[2];\r
-  UINT64   f27[2];\r
-  UINT64   f28[2];\r
-  UINT64   f29[2];\r
-  UINT64   f30[2];\r
-  UINT64   f31[2];\r
-} EFI_PMI_OPTIONAL_FLOATING_POINT_CONTEXT;\r
-\r
-typedef union {\r
-  EFI_SMI_OPTIONAL_FPSAVE_STATE             Ia32FpSave;\r
-  EFI_PMI_OPTIONAL_FLOATING_POINT_CONTEXT   ItaniumFpSave;\r
-} EFI_SMM_FLOATING_POINT_SAVE_STATE;\r
-\r
-/**\r
-  This function is the main entry point for an SMM handler dispatch\r
-  or communicate-based callback.\r
-\r
-  @param  SmmImageHandle   A unique value returned by the SMM infrastructure\r
-                           in response to registration for a communicate-based callback or dispatch.\r
-  @param  CommunicationBuffer\r
-                           An optional buffer that will be populated\r
-                           by the SMM infrastructure in response to a non-SMM agent (preboot or runtime)\r
-                           invoking the EFI_SMM_BASE_PROTOCOL.Communicate() service.\r
-  @param  SourceSize       If CommunicationBuffer is non-NULL, this field\r
-                           indicates the size of the data payload in this buffer.\r
-\r
-  @return Status Code\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_HANDLER_ENTRY_POINT) (\r
-  IN EFI_HANDLE             SmmImageHandle,\r
-  IN OUT VOID               *CommunicationBuffer OPTIONAL,\r
-  IN OUT UINTN              *SourceSize OPTIONAL\r
-  );\r
-\r
-/**\r
-  The SmmInstallConfigurationTable() function is used to maintain the list\r
-  of configuration tables that are stored in the System Management System\r
-  Table.  The list is stored as an array of (GUID, Pointer) pairs.  The list\r
-  must be allocated from pool memory with PoolType set to EfiRuntimeServicesData.\r
-\r
-  @param  SystemTable      A pointer to the SMM System Table.\r
-  @param  Guid             A pointer to the GUID for the entry to add, update, or remove.\r
-  @param  Table            A pointer to the buffer of the table to add.\r
-  @param  TableSize        The size of the table to install.\r
-\r
-  @retval EFI_SUCCESS           The (Guid, Table) pair was added, updated, or removed.\r
-  @retval EFI_INVALID_PARAMETER Guid is not valid.\r
-  @retval EFI_NOT_FOUND         An attempt was made to delete a non-existent entry.\r
-  @retval EFI_OUT_OF_RESOURCES  There is not enough memory available to complete the operation.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_INSTALL_CONFIGURATION_TABLE) (\r
-  IN EFI_SMM_SYSTEM_TABLE         *SystemTable,\r
-  IN EFI_GUID                     *Guid,\r
-  IN VOID                         *Table,\r
-  IN UINTN                        TableSize\r
-  );\r
-\r
-//\r
-// System Management System Table (SMST)\r
-//\r
-struct _EFI_SMM_SYSTEM_TABLE {\r
-  EFI_TABLE_HEADER                    Hdr;\r
-\r
-  CHAR16                              *SmmFirmwareVendor;\r
-  UINT32                              SmmFirmwareRevision;\r
-\r
-  EFI_SMM_INSTALL_CONFIGURATION_TABLE SmmInstallConfigurationTable;\r
-\r
-  //\r
-  // I/O Services\r
-  //\r
-  EFI_GUID                            EfiSmmCpuIoGuid;\r
-  EFI_SMM_CPU_IO_INTERFACE            SmmIo;\r
-\r
-  //\r
-  // Runtime memory service\r
-  //\r
-  EFI_SMMCORE_ALLOCATE_POOL           SmmAllocatePool;\r
-  EFI_SMMCORE_FREE_POOL               SmmFreePool;\r
-  EFI_SMMCORE_ALLOCATE_PAGES          SmmAllocatePages;\r
-  EFI_SMMCORE_FREE_PAGES              SmmFreePages;\r
-\r
-  //\r
-  // MP service\r
-  //\r
-  EFI_SMM_STARTUP_THIS_AP             SmmStartupThisAp;\r
-\r
-  //\r
-  // CPU information records\r
-  //\r
-  UINTN                               CurrentlyExecutingCpu;\r
-  UINTN                               NumberOfCpus;\r
-  EFI_SMM_CPU_SAVE_STATE              *CpuSaveState;\r
-  EFI_SMM_FLOATING_POINT_SAVE_STATE   *CpuOptionalFloatingPointState;\r
-\r
-  //\r
-  // Extensibility table\r
-  //\r
-  UINTN                               NumberOfTableEntries;\r
-  EFI_CONFIGURATION_TABLE             *SmmConfigurationTable;\r
-};\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Common/FrameworkStatusCode.h b/IntelFrameworkPkg/Include/Common/FrameworkStatusCode.h
deleted file mode 100644 (file)
index 6e997b6..0000000
+++ /dev/null
@@ -1,905 +0,0 @@
-/** @file\r
-  Status Code Definitions, according to Intel Platform Innovation Framework\r
-  for EFI Status Codes Specification\r
-\r
-  The file is divided into sections for ease of use.\r
-\r
-<pre>\r
-  Section:    Contents:\r
-  1           General Status Code Definitions\r
-  2           Class definitions\r
-  3           Computing Unit Subclasses, Progress and Error Codes\r
-  4           Peripheral Subclasses, Progress and Error Codes.\r
-  5           IO Bus Subclasses, Progress and Error Codes.\r
-  6           Software Subclasses, Progress and Error Codes.\r
-  7           Debug Codes\r
-</pre>\r
-\r
-  Copyright (c) 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
-  Module Name:  StatusCode.h\r
-\r
-  @par Revision Reference:\r
-  Version 0.92.\r
-\r
-**/\r
-\r
-#ifndef _FRAMEWORK_STATUS_CODE_H_\r
-#define _FRAMEWORK_STATUS_CODE_H_\r
-\r
-#include <PiPei.h>\r
-\r
-//\r
-// /////////////////////////////////////////////////////////////////////////////\r
-// Section 1\r
-////////////////////////////////////////////////////////////////////////////////\r
-\r
-//\r
-// Data Hub Status Code class record definition\r
-// This structure isn't adopted by PI, so is defined here.\r
-//\r
-typedef struct {\r
-  EFI_STATUS_CODE_TYPE  CodeType;\r
-  EFI_STATUS_CODE_VALUE Value;\r
-  UINT32                Instance;\r
-  EFI_GUID              CallerId;\r
-  EFI_STATUS_CODE_DATA  Data;\r
-} DATA_HUB_STATUS_CODE_DATA_RECORD;\r
-\r
-//\r
-// /////////////////////////////////////////////////////////////////////////////\r
-// Section 2\r
-///////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Class definitions\r
-// Values of 4-127 are reserved for future use by this\r
-// specification.\r
-// Values in the range 127-255 are reserved for OEM use.\r
-//\r
-#define EFI_COMPUTING_UNIT  0x00000000\r
-#define EFI_PERIPHERAL      0x01000000\r
-#define EFI_IO_BUS          0x02000000\r
-#define EFI_SOFTWARE        0x03000000\r
-\r
-//\r
-// General partitioning scheme for Progress and Error Codes are\r
-// 0x0000-0x0FFF  - Shared by all sub-classes in a given class\r
-// 0x1000-0x7FFF  - Subclass Specific\r
-// 0x8000-0xFFFF  - OEM specific\r
-//\r
-#define EFI_SUBCLASS_SPECIFIC 0x1000\r
-#define EFI_OEM_SPECIFIC      0x8000\r
-\r
-//\r
-// /////////////////////////////////////////////////////////////////////////////\r
-// Section 3\r
-///////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Computing Unit Subclass definitions.\r
-// Values of 8-127 are reserved for future use by this\r
-// specification.\r
-// Values of 128-255 are reserved for OEM use.\r
-//\r
-#define EFI_COMPUTING_UNIT_UNSPECIFIED        (EFI_COMPUTING_UNIT | 0x00000000)\r
-#define EFI_COMPUTING_UNIT_HOST_PROCESSOR     (EFI_COMPUTING_UNIT | 0x00010000)\r
-#define EFI_COMPUTING_UNIT_FIRMWARE_PROCESSOR (EFI_COMPUTING_UNIT | 0x00020000)\r
-#define EFI_COMPUTING_UNIT_IO_PROCESSOR       (EFI_COMPUTING_UNIT | 0x00030000)\r
-#define EFI_COMPUTING_UNIT_CACHE              (EFI_COMPUTING_UNIT | 0x00040000)\r
-#define EFI_COMPUTING_UNIT_MEMORY             (EFI_COMPUTING_UNIT | 0x00050000)\r
-#define EFI_COMPUTING_UNIT_CHIPSET            (EFI_COMPUTING_UNIT | 0x00060000)\r
-\r
-//\r
-// Computing Unit Class Progress Code definitions.\r
-// These are shared by all subclasses.\r
-//\r
-#define EFI_CU_PC_INIT_BEGIN  0x00000000\r
-#define EFI_CU_PC_INIT_END    0x00000001\r
-\r
-//\r
-// Computing Unit Unspecified Subclass Progress Code definitions.\r
-//\r
-//\r
-// Computing Unit Host Processor Subclass Progress Code definitions.\r
-//\r
-#define EFI_CU_HP_PC_POWER_ON_INIT          (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_CU_HP_PC_CACHE_INIT             (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_CU_HP_PC_RAM_INIT               (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-#define EFI_CU_HP_PC_MEMORY_CONTROLLER_INIT (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-#define EFI_CU_HP_PC_IO_INIT                (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
-#define EFI_CU_HP_PC_BSP_SELECT             (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
-#define EFI_CU_HP_PC_BSP_RESELECT           (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
-#define EFI_CU_HP_PC_AP_INIT                (EFI_SUBCLASS_SPECIFIC | 0x00000007)\r
-#define EFI_CU_HP_PC_SMM_INIT               (EFI_SUBCLASS_SPECIFIC | 0x00000008)\r
-\r
-//\r
-// Computing Unit Firmware Processor Subclass Progress Code definitions.\r
-//\r
-//\r
-// Computing Unit IO Processor Subclass Progress Code definitions.\r
-//\r
-//\r
-// Computing Unit Cache Subclass Progress Code definitions.\r
-//\r
-#define EFI_CU_CACHE_PC_PRESENCE_DETECT (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_CU_CACHE_PC_CONFIGURATION   (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-\r
-//\r
-// Computing Unit Memory Subclass Progress Code definitions.\r
-//\r
-#define EFI_CU_MEMORY_PC_SPD_READ         (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_CU_MEMORY_PC_PRESENCE_DETECT  (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_CU_MEMORY_PC_TIMING           (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-#define EFI_CU_MEMORY_PC_CONFIGURING      (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-#define EFI_CU_MEMORY_PC_OPTIMIZING       (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
-#define EFI_CU_MEMORY_PC_INIT             (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
-#define EFI_CU_MEMORY_PC_TEST             (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
-\r
-//\r
-// Computing Unit Chipset Subclass Progress Code definitions.\r
-//\r
-//\r
-// Computing Unit Class Error Code definitions.\r
-// These are shared by all subclasses.\r
-//\r
-#define EFI_CU_EC_NON_SPECIFIC    0x00000000\r
-#define EFI_CU_EC_DISABLED        0x00000001\r
-#define EFI_CU_EC_NOT_SUPPORTED   0x00000002\r
-#define EFI_CU_EC_NOT_DETECTED    0x00000003\r
-#define EFI_CU_EC_NOT_CONFIGURED  0x00000004\r
-\r
-//\r
-// Computing Unit Unspecified Subclass Error Code definitions.\r
-//\r
-//\r
-// Computing Unit Host Processor Subclass Error Code definitions.\r
-//\r
-#define EFI_CU_HP_EC_INVALID_TYPE         (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_CU_HP_EC_INVALID_SPEED        (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_CU_HP_EC_MISMATCH             (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-#define EFI_CU_HP_EC_TIMER_EXPIRED        (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-#define EFI_CU_HP_EC_SELF_TEST            (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
-#define EFI_CU_HP_EC_INTERNAL             (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
-#define EFI_CU_HP_EC_THERMAL              (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
-#define EFI_CU_HP_EC_LOW_VOLTAGE          (EFI_SUBCLASS_SPECIFIC | 0x00000007)\r
-#define EFI_CU_HP_EC_HIGH_VOLTAGE         (EFI_SUBCLASS_SPECIFIC | 0x00000008)\r
-#define EFI_CU_HP_EC_CACHE                (EFI_SUBCLASS_SPECIFIC | 0x00000009)\r
-#define EFI_CU_HP_EC_MICROCODE_UPDATE     (EFI_SUBCLASS_SPECIFIC | 0x0000000A)\r
-#define EFI_CU_HP_EC_CORRECTABLE          (EFI_SUBCLASS_SPECIFIC | 0x0000000B)\r
-#define EFI_CU_HP_EC_UNCORRECTABLE        (EFI_SUBCLASS_SPECIFIC | 0x0000000C)\r
-#define EFI_CU_HP_EC_NO_MICROCODE_UPDATE  (EFI_SUBCLASS_SPECIFIC | 0x0000000D)\r
-\r
-//\r
-// Computing Unit Firmware Processor Subclass Error Code definitions.\r
-//\r
-#define EFI_CU_FP_EC_HARD_FAIL  (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_CU_FP_EC_SOFT_FAIL  (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_CU_FP_EC_COMM_ERROR (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-\r
-//\r
-// Computing Unit IO Processor Subclass Error Code definitions.\r
-//\r
-//\r
-// Computing Unit Cache Subclass Error Code definitions.\r
-//\r
-#define EFI_CU_CACHE_EC_INVALID_TYPE  (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_CU_CACHE_EC_INVALID_SPEED (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_CU_CACHE_EC_INVALID_SIZE  (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-#define EFI_CU_CACHE_EC_MISMATCH      (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-\r
-//\r
-// Computing Unit Memory Subclass Error Code definitions.\r
-//\r
-#define EFI_CU_MEMORY_EC_INVALID_TYPE   (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_CU_MEMORY_EC_INVALID_SPEED  (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_CU_MEMORY_EC_CORRECTABLE    (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-#define EFI_CU_MEMORY_EC_UNCORRECTABLE  (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-#define EFI_CU_MEMORY_EC_SPD_FAIL       (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
-#define EFI_CU_MEMORY_EC_INVALID_SIZE   (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
-#define EFI_CU_MEMORY_EC_MISMATCH       (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
-#define EFI_CU_MEMORY_EC_S3_RESUME_FAIL (EFI_SUBCLASS_SPECIFIC | 0x00000007)\r
-#define EFI_CU_MEMORY_EC_UPDATE_FAIL    (EFI_SUBCLASS_SPECIFIC | 0x00000008)\r
-#define EFI_CU_MEMORY_EC_NONE_DETECTED  (EFI_SUBCLASS_SPECIFIC | 0x00000009)\r
-#define EFI_CU_MEMORY_EC_NONE_USEFUL    (EFI_SUBCLASS_SPECIFIC | 0x0000000A)\r
-\r
-//\r
-// Computing Unit Chipset Subclass Error Code definitions.\r
-//\r
-\r
-///////////////////////////////////////////////////////////////////////////////\r
-// Section 4\r
-///////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Peripheral Subclass definitions.\r
-// Values of 12-127 are reserved for future use by this\r
-// specification.\r
-// Values of 128-255 are reserved for OEM use.\r
-//\r
-#define EFI_PERIPHERAL_UNSPECIFIED      (EFI_PERIPHERAL | 0x00000000)\r
-#define EFI_PERIPHERAL_KEYBOARD         (EFI_PERIPHERAL | 0x00010000)\r
-#define EFI_PERIPHERAL_MOUSE            (EFI_PERIPHERAL | 0x00020000)\r
-#define EFI_PERIPHERAL_LOCAL_CONSOLE    (EFI_PERIPHERAL | 0x00030000)\r
-#define EFI_PERIPHERAL_REMOTE_CONSOLE   (EFI_PERIPHERAL | 0x00040000)\r
-#define EFI_PERIPHERAL_SERIAL_PORT      (EFI_PERIPHERAL | 0x00050000)\r
-#define EFI_PERIPHERAL_PARALLEL_PORT    (EFI_PERIPHERAL | 0x00060000)\r
-#define EFI_PERIPHERAL_FIXED_MEDIA      (EFI_PERIPHERAL | 0x00070000)\r
-#define EFI_PERIPHERAL_REMOVABLE_MEDIA  (EFI_PERIPHERAL | 0x00080000)\r
-#define EFI_PERIPHERAL_AUDIO_INPUT      (EFI_PERIPHERAL | 0x00090000)\r
-#define EFI_PERIPHERAL_AUDIO_OUTPUT     (EFI_PERIPHERAL | 0x000A0000)\r
-#define EFI_PERIPHERAL_LCD_DEVICE       (EFI_PERIPHERAL | 0x000B0000)\r
-#define EFI_PERIPHERAL_NETWORK          (EFI_PERIPHERAL | 0x000C0000)\r
-\r
-//\r
-// Peripheral Class Progress Code definitions.\r
-// These are shared by all subclasses.\r
-//\r
-#define EFI_P_PC_INIT             0x00000000\r
-#define EFI_P_PC_RESET            0x00000001\r
-#define EFI_P_PC_DISABLE          0x00000002\r
-#define EFI_P_PC_PRESENCE_DETECT  0x00000003\r
-#define EFI_P_PC_ENABLE           0x00000004\r
-#define EFI_P_PC_RECONFIG         0x00000005\r
-#define EFI_P_PC_DETECTED         0x00000006\r
-\r
-//\r
-// Peripheral Class Unspecified Subclass Progress Code definitions.\r
-//\r
-//\r
-// Peripheral Class Keyboard Subclass Progress Code definitions.\r
-//\r
-#define EFI_P_KEYBOARD_PC_CLEAR_BUFFER  (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_P_KEYBOARD_PC_SELF_TEST     (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-\r
-//\r
-// Peripheral Class Mouse Subclass Progress Code definitions.\r
-//\r
-#define EFI_P_MOUSE_PC_SELF_TEST  (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-\r
-//\r
-// Peripheral Class Local Console Subclass Progress Code definitions.\r
-//\r
-//\r
-// Peripheral Class Remote Console Subclass Progress Code definitions.\r
-//\r
-//\r
-// Peripheral Class Serial Port Subclass Progress Code definitions.\r
-//\r
-#define EFI_P_SERIAL_PORT_PC_CLEAR_BUFFER (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-\r
-//\r
-// Peripheral Class Parallel Port Subclass Progress Code definitions.\r
-//\r
-//\r
-// Peripheral Class Fixed Media Subclass Progress Code definitions.\r
-//\r
-//\r
-// Peripheral Class Removable Media Subclass Progress Code definitions.\r
-//\r
-//\r
-// Peripheral Class Audio Input Subclass Progress Code definitions.\r
-//\r
-//\r
-// Peripheral Class Audio Output Subclass Progress Code definitions.\r
-//\r
-//\r
-// Peripheral Class LCD Device Subclass Progress Code definitions.\r
-//\r
-//\r
-// Peripheral Class Network Subclass Progress Code definitions.\r
-//\r
-//\r
-// Peripheral Class Error Code definitions.\r
-// These are shared by all subclasses.\r
-//\r
-#define EFI_P_EC_NON_SPECIFIC       0x00000000\r
-#define EFI_P_EC_DISABLED           0x00000001\r
-#define EFI_P_EC_NOT_SUPPORTED      0x00000002\r
-#define EFI_P_EC_NOT_DETECTED       0x00000003\r
-#define EFI_P_EC_NOT_CONFIGURED     0x00000004\r
-#define EFI_P_EC_INTERFACE_ERROR    0x00000005\r
-#define EFI_P_EC_CONTROLLER_ERROR   0x00000006\r
-#define EFI_P_EC_INPUT_ERROR        0x00000007\r
-#define EFI_P_EC_OUTPUT_ERROR       0x00000008\r
-#define EFI_P_EC_RESOURCE_CONFLICT  0x00000009\r
-\r
-//\r
-// Peripheral Class Unspecified Subclass Error Code definitions.\r
-//\r
-//\r
-// Peripheral Class Keyboard Subclass Error Code definitions.\r
-//\r
-#define EFI_P_KEYBOARD_EC_LOCKED    (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_P_KEYBOARD_EC_STUCK_KEY (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-\r
-//\r
-// Peripheral Class Mouse Subclass Error Code definitions.\r
-//\r
-#define EFI_P_MOUSE_EC_LOCKED (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-\r
-//\r
-// Peripheral Class Local Console Subclass Error Code definitions.\r
-//\r
-//\r
-// Peripheral Class Remote Console Subclass Error Code definitions.\r
-//\r
-//\r
-// Peripheral Class Serial Port Subclass Error Code definitions.\r
-//\r
-//\r
-// Peripheral Class Parallel Port Subclass Error Code definitions.\r
-//\r
-//\r
-// Peripheral Class Fixed Media Subclass Error Code definitions.\r
-//\r
-//\r
-// Peripheral Class Removable Media Subclass Error Code definitions.\r
-//\r
-//\r
-// Peripheral Class Audio Input Subclass Error Code definitions.\r
-//\r
-//\r
-// Peripheral Class Audio Output Subclass Error Code definitions.\r
-//\r
-//\r
-// Peripheral Class LCD Device Subclass Error Code definitions.\r
-//\r
-//\r
-// Peripheral Class Network Subclass Error Code definitions.\r
-//\r
-\r
-///////////////////////////////////////////////////////////////////////////////\r
-// Section 5\r
-///////////////////////////////////////////////////////////////////////////////\r
-//\r
-// IO Bus Subclass definitions.\r
-// Values of 14-127 are reserved for future use by this\r
-// specification.\r
-// Values of 128-255 are reserved for OEM use.\r
-//\r
-#define EFI_IO_BUS_UNSPECIFIED  (EFI_IO_BUS | 0x00000000)\r
-#define EFI_IO_BUS_PCI          (EFI_IO_BUS | 0x00010000)\r
-#define EFI_IO_BUS_USB          (EFI_IO_BUS | 0x00020000)\r
-#define EFI_IO_BUS_IBA          (EFI_IO_BUS | 0x00030000)\r
-#define EFI_IO_BUS_AGP          (EFI_IO_BUS | 0x00040000)\r
-#define EFI_IO_BUS_PC_CARD      (EFI_IO_BUS | 0x00050000)\r
-#define EFI_IO_BUS_LPC          (EFI_IO_BUS | 0x00060000)\r
-#define EFI_IO_BUS_SCSI         (EFI_IO_BUS | 0x00070000)\r
-#define EFI_IO_BUS_ATA_ATAPI    (EFI_IO_BUS | 0x00080000)\r
-#define EFI_IO_BUS_FC           (EFI_IO_BUS | 0x00090000)\r
-#define EFI_IO_BUS_IP_NETWORK   (EFI_IO_BUS | 0x000A0000)\r
-#define EFI_IO_BUS_SMBUS        (EFI_IO_BUS | 0x000B0000)\r
-#define EFI_IO_BUS_I2C          (EFI_IO_BUS | 0x000C0000)\r
-\r
-//\r
-// IO Bus Class Progress Code definitions.\r
-// These are shared by all subclasses.\r
-//\r
-#define EFI_IOB_PC_INIT     0x00000000\r
-#define EFI_IOB_PC_RESET    0x00000001\r
-#define EFI_IOB_PC_DISABLE  0x00000002\r
-#define EFI_IOB_PC_DETECT   0x00000003\r
-#define EFI_IOB_PC_ENABLE   0x00000004\r
-#define EFI_IOB_PC_RECONFIG 0x00000005\r
-#define EFI_IOB_PC_HOTPLUG  0x00000006\r
-\r
-//\r
-// IO Bus Class Unspecified Subclass Progress Code definitions.\r
-//\r
-//\r
-// IO Bus Class PCI Subclass Progress Code definitions.\r
-//\r
-#define EFI_IOB_PCI_PC_BUS_ENUM   (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_IOB_PCI_PC_RES_ALLOC  (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_IOB_PCI_PC_HPC_INIT   (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-\r
-//\r
-// IO Bus Class USB Subclass Progress Code definitions.\r
-//\r
-//\r
-// IO Bus Class IBA Subclass Progress Code definitions.\r
-//\r
-//\r
-// IO Bus Class AGP Subclass Progress Code definitions.\r
-//\r
-//\r
-// IO Bus Class PC Card Subclass Progress Code definitions.\r
-//\r
-//\r
-// IO Bus Class LPC Subclass Progress Code definitions.\r
-//\r
-//\r
-// IO Bus Class SCSI Subclass Progress Code definitions.\r
-//\r
-//\r
-// IO Bus Class ATA/ATAPI Subclass Progress Code definitions.\r
-//\r
-#define EFI_IOB_ATA_BUS_SMART_ENABLE          (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_IOB_ATA_BUS_SMART_DISABLE         (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_IOB_ATA_BUS_SMART_OVERTHRESHOLD   (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-#define EFI_IOB_ATA_BUS_SMART_UNDERTHRESHOLD  (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-\r
-//\r
-// IO Bus Class FC Subclass Progress Code definitions.\r
-//\r
-//\r
-// IO Bus Class IP Network Subclass Progress Code definitions.\r
-//\r
-//\r
-// IO Bus Class SMBUS Subclass Progress Code definitions.\r
-//\r
-//\r
-// IO Bus Class I2C Subclass Progress Code definitions.\r
-//\r
-//\r
-// IO Bus Class Error Code definitions.\r
-// These are shared by all subclasses.\r
-//\r
-#define EFI_IOB_EC_NON_SPECIFIC       0x00000000\r
-#define EFI_IOB_EC_DISABLED           0x00000001\r
-#define EFI_IOB_EC_NOT_SUPPORTED      0x00000002\r
-#define EFI_IOB_EC_NOT_DETECTED       0x00000003\r
-#define EFI_IOB_EC_NOT_CONFIGURED     0x00000004\r
-#define EFI_IOB_EC_INTERFACE_ERROR    0x00000005\r
-#define EFI_IOB_EC_CONTROLLER_ERROR   0x00000006\r
-#define EFI_IOB_EC_READ_ERROR         0x00000007\r
-#define EFI_IOB_EC_WRITE_ERROR        0x00000008\r
-#define EFI_IOB_EC_RESOURCE_CONFLICT  0x00000009\r
-\r
-//\r
-// IO Bus Class Unspecified Subclass Error Code definitions.\r
-//\r
-//\r
-// IO Bus Class PCI Subclass Error Code definitions.\r
-//\r
-#define EFI_IOB_PCI_EC_PERR (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_IOB_PCI_EC_SERR (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-\r
-//\r
-// IO Bus Class USB Subclass Error Code definitions.\r
-//\r
-//\r
-// IO Bus Class IBA Subclass Error Code definitions.\r
-//\r
-//\r
-// IO Bus Class AGP Subclass Error Code definitions.\r
-//\r
-//\r
-// IO Bus Class PC Card Subclass Error Code definitions.\r
-//\r
-//\r
-// IO Bus Class LPC Subclass Error Code definitions.\r
-//\r
-//\r
-// IO Bus Class SCSI Subclass Error Code definitions.\r
-//\r
-//\r
-// IO Bus Class ATA/ATAPI Subclass Error Code definitions.\r
-//\r
-#define EFI_IOB_ATA_BUS_SMART_NOTSUPPORTED  (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_IOB_ATA_BUS_SMART_DISABLED      (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-\r
-//\r
-// IO Bus Class FC Subclass Error Code definitions.\r
-//\r
-//\r
-// IO Bus Class IP Network Subclass Error Code definitions.\r
-//\r
-//\r
-// IO Bus Class SMBUS Subclass Error Code definitions.\r
-//\r
-//\r
-// IO Bus Class I2C Subclass Error Code definitions.\r
-//\r
-\r
-///////////////////////////////////////////////////////////////////////////////\r
-// Section 6\r
-///////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Software Subclass definitions.\r
-// Values of 14-127 are reserved for future use by this\r
-// specification.\r
-// Values of 128-255 are reserved for OEM use.\r
-//\r
-#define EFI_SOFTWARE_UNSPECIFIED          (EFI_SOFTWARE | 0x00000000)\r
-#define EFI_SOFTWARE_SEC                  (EFI_SOFTWARE | 0x00010000)\r
-#define EFI_SOFTWARE_PEI_CORE             (EFI_SOFTWARE | 0x00020000)\r
-#define EFI_SOFTWARE_PEI_MODULE           (EFI_SOFTWARE | 0x00030000)\r
-#define EFI_SOFTWARE_DXE_CORE             (EFI_SOFTWARE | 0x00040000)\r
-#define EFI_SOFTWARE_DXE_BS_DRIVER        (EFI_SOFTWARE | 0x00050000)\r
-#define EFI_SOFTWARE_DXE_RT_DRIVER        (EFI_SOFTWARE | 0x00060000)\r
-#define EFI_SOFTWARE_SMM_DRIVER           (EFI_SOFTWARE | 0x00070000)\r
-#define EFI_SOFTWARE_EFI_APPLICATION      (EFI_SOFTWARE | 0x00080000)\r
-#define EFI_SOFTWARE_EFI_OS_LOADER        (EFI_SOFTWARE | 0x00090000)\r
-#define EFI_SOFTWARE_RT                   (EFI_SOFTWARE | 0x000A0000)\r
-#define EFI_SOFTWARE_AL                   (EFI_SOFTWARE | 0x000B0000)\r
-#define EFI_SOFTWARE_EBC_EXCEPTION        (EFI_SOFTWARE | 0x000C0000)\r
-#define EFI_SOFTWARE_IA32_EXCEPTION       (EFI_SOFTWARE | 0x000D0000)\r
-#define EFI_SOFTWARE_IPF_EXCEPTION        (EFI_SOFTWARE | 0x000E0000)\r
-#define EFI_SOFTWARE_PEI_SERVICE          (EFI_SOFTWARE | 0x000F0000)\r
-#define EFI_SOFTWARE_EFI_BOOT_SERVICE     (EFI_SOFTWARE | 0x00100000)\r
-#define EFI_SOFTWARE_EFI_RUNTIME_SERVICE  (EFI_SOFTWARE | 0x00110000)\r
-#define EFI_SOFTWARE_EFI_DXE_SERVICE      (EFI_SOFTWARE | 0x00120000)\r
-#define EFI_SOFTWARE_X64_EXCEPTION        (EFI_SOFTWARE | 0x00130000)\r
-\r
-//\r
-// Software Class Progress Code definitions.\r
-// These are shared by all subclasses.\r
-//\r
-#define EFI_SW_PC_INIT                0x00000000\r
-#define EFI_SW_PC_LOAD                0x00000001\r
-#define EFI_SW_PC_INIT_BEGIN          0x00000002\r
-#define EFI_SW_PC_INIT_END            0x00000003\r
-#define EFI_SW_PC_AUTHENTICATE_BEGIN  0x00000004\r
-#define EFI_SW_PC_AUTHENTICATE_END    0x00000005\r
-#define EFI_SW_PC_INPUT_WAIT          0x00000006\r
-#define EFI_SW_PC_USER_SETUP          0x00000007\r
-\r
-//\r
-// Software Class Unspecified Subclass Progress Code definitions.\r
-//\r
-//\r
-// Software Class SEC Subclass Progress Code definitions.\r
-//\r
-#define EFI_SW_SEC_PC_ENTRY_POINT     (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_SW_SEC_PC_HANDOFF_TO_NEXT (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-\r
-//\r
-// Software Class PEI Core Subclass Progress Code definitions.\r
-//\r
-#define EFI_SW_PEI_CORE_PC_ENTRY_POINT      (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_SW_PEI_CORE_PC_HANDOFF_TO_NEXT  (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_SW_PEI_CORE_PC_RETURN_TO_LAST   (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-\r
-//\r
-// Software Class PEI Module Subclass Progress Code definitions.\r
-//\r
-#define EFI_SW_PEIM_PC_RECOVERY_BEGIN (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_SW_PEIM_PC_CAPSULE_LOAD   (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_SW_PEIM_PC_CAPSULE_START  (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-#define EFI_SW_PEIM_PC_RECOVERY_USER  (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-#define EFI_SW_PEIM_PC_RECOVERY_AUTO  (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
-\r
-//\r
-// Software Class DXE Core Subclass Progress Code definitions.\r
-//\r
-#define EFI_SW_DXE_CORE_PC_ENTRY_POINT      (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_SW_DXE_CORE_PC_HANDOFF_TO_NEXT  (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_SW_DXE_CORE_PC_RETURN_TO_LAST   (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-#define EFI_SW_DXE_CORE_PC_START_DRIVER     (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-\r
-//\r
-// Software Class DXE BS Driver Subclass Progress Code definitions.\r
-//\r
-#define EFI_SW_DXE_BS_PC_LEGACY_OPROM_INIT            (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_SW_DXE_BS_PC_READY_TO_BOOT_EVENT          (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_SW_DXE_BS_PC_LEGACY_BOOT_EVENT            (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-#define EFI_SW_DXE_BS_PC_EXIT_BOOT_SERVICES_EVENT     (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-#define EFI_SW_DXE_BS_PC_VIRTUAL_ADDRESS_CHANGE_EVENT (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
-#define EFI_SW_DXE_BS_PC_BEGIN_CONNECTING_DRIVERS     (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
-#define EFI_SW_DXE_BS_PC_VERIFYING_PASSWORD           (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
-\r
-//\r
-// Software Class DXE RT Driver Subclass Progress Code definitions.\r
-//\r
-#define EFI_SW_DXE_RT_PC_S0 (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_SW_DXE_RT_PC_S1 (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_SW_DXE_RT_PC_S2 (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-#define EFI_SW_DXE_RT_PC_S3 (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-#define EFI_SW_DXE_RT_PC_S4 (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
-#define EFI_SW_DXE_RT_PC_S5 (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
-\r
-//\r
-// Software Class SMM Driver Subclass Progress Code definitions.\r
-//\r
-//\r
-// Software Class EFI Application Subclass Progress Code definitions.\r
-//\r
-//\r
-// Software Class EFI OS Loader Subclass Progress Code definitions.\r
-//\r
-//\r
-// Software Class EFI RT Subclass Progress Code definitions.\r
-//\r
-#define EFI_SW_RT_PC_ENTRY_POINT      (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_SW_RT_PC_HANDOFF_TO_NEXT  (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_SW_RT_PC_RETURN_TO_LAST   (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-\r
-//\r
-// Software Class EFI AL Subclass Progress Code definitions.\r
-//\r
-#define EFI_SW_AL_PC_ENTRY_POINT    (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_SW_AL_PC_RETURN_TO_LAST (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-\r
-//\r
-// Software Class EBC Exception Subclass Progress Code definitions.\r
-//\r
-//\r
-// Software Class IA32 Exception Subclass Progress Code definitions.\r
-//\r
-//\r
-// Software Class X64 Exception Subclass Progress Code definitions.\r
-//\r
-//\r
-// Software Class IPF Exception Subclass Progress Code definitions.\r
-//\r
-//\r
-// Software Class PEI Services Subclass Progress Code definitions.\r
-//\r
-#define EFI_SW_PS_PC_INSTALL_PPI            (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_SW_PS_PC_REINSTALL_PPI          (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_SW_PS_PC_LOCATE_PPI             (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-#define EFI_SW_PS_PC_NOTIFY_PPI             (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-#define EFI_SW_PS_PC_GET_BOOT_MODE          (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
-#define EFI_SW_PS_PC_SET_BOOT_MODE          (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
-#define EFI_SW_PS_PC_GET_HOB_LIST           (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
-#define EFI_SW_PS_PC_CREATE_HOB             (EFI_SUBCLASS_SPECIFIC | 0x00000007)\r
-#define EFI_SW_PS_PC_FFS_FIND_NEXT_VOLUME   (EFI_SUBCLASS_SPECIFIC | 0x00000008)\r
-#define EFI_SW_PS_PC_FFS_FIND_NEXT_FILE     (EFI_SUBCLASS_SPECIFIC | 0x00000009)\r
-#define EFI_SW_PS_PC_FFS_FIND_SECTION_DATA  (EFI_SUBCLASS_SPECIFIC | 0x0000000A)\r
-#define EFI_SW_PS_PC_INSTALL_PEI_MEMORY     (EFI_SUBCLASS_SPECIFIC | 0x0000000B)\r
-#define EFI_SW_PS_PC_ALLOCATE_PAGES         (EFI_SUBCLASS_SPECIFIC | 0x0000000C)\r
-#define EFI_SW_PS_PC_ALLOCATE_POOL          (EFI_SUBCLASS_SPECIFIC | 0x0000000D)\r
-#define EFI_SW_PS_PC_COPY_MEM               (EFI_SUBCLASS_SPECIFIC | 0x0000000E)\r
-#define EFI_SW_PS_PC_SET_MEM                (EFI_SUBCLASS_SPECIFIC | 0x0000000F)\r
-\r
-//\r
-// Software Class EFI Boot Services Subclass Progress Code definitions.\r
-//\r
-#define EFI_SW_BS_PC_RAISE_TPL                      (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_SW_BS_PC_RESTORE_TPL                    (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_SW_BS_PC_ALLOCATE_PAGES                 (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-#define EFI_SW_BS_PC_FREE_PAGES                     (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-#define EFI_SW_BS_PC_GET_MEMORY_MAP                 (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
-#define EFI_SW_BS_PC_ALLOCATE_POOL                  (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
-#define EFI_SW_BS_PC_FREE_POOL                      (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
-#define EFI_SW_BS_PC_CREATE_EVENT                   (EFI_SUBCLASS_SPECIFIC | 0x00000007)\r
-#define EFI_SW_BS_PC_SET_TIMER                      (EFI_SUBCLASS_SPECIFIC | 0x00000008)\r
-#define EFI_SW_BS_PC_WAIT_FOR_EVENT                 (EFI_SUBCLASS_SPECIFIC | 0x00000009)\r
-#define EFI_SW_BS_PC_SIGNAL_EVENT                   (EFI_SUBCLASS_SPECIFIC | 0x0000000A)\r
-#define EFI_SW_BS_PC_CLOSE_EVENT                    (EFI_SUBCLASS_SPECIFIC | 0x0000000B)\r
-#define EFI_SW_BS_PC_CHECK_EVENT                    (EFI_SUBCLASS_SPECIFIC | 0x0000000C)\r
-#define EFI_SW_BS_PC_INSTALL_PROTOCOL_INTERFACE     (EFI_SUBCLASS_SPECIFIC | 0x0000000D)\r
-#define EFI_SW_BS_PC_REINSTALL_PROTOCOL_INTERFACE   (EFI_SUBCLASS_SPECIFIC | 0x0000000E)\r
-#define EFI_SW_BS_PC_UNINSTALL_PROTOCOL_INTERFACE   (EFI_SUBCLASS_SPECIFIC | 0x0000000F)\r
-#define EFI_SW_BS_PC_HANDLE_PROTOCOL                (EFI_SUBCLASS_SPECIFIC | 0x00000010)\r
-#define EFI_SW_BS_PC_PC_HANDLE_PROTOCOL             (EFI_SUBCLASS_SPECIFIC | 0x00000011)\r
-#define EFI_SW_BS_PC_REGISTER_PROTOCOL_NOTIFY       (EFI_SUBCLASS_SPECIFIC | 0x00000012)\r
-#define EFI_SW_BS_PC_LOCATE_HANDLE                  (EFI_SUBCLASS_SPECIFIC | 0x00000013)\r
-#define EFI_SW_BS_PC_INSTALL_CONFIGURATION_TABLE    (EFI_SUBCLASS_SPECIFIC | 0x00000014)\r
-#define EFI_SW_BS_PC_LOAD_IMAGE                     (EFI_SUBCLASS_SPECIFIC | 0x00000015)\r
-#define EFI_SW_BS_PC_START_IMAGE                    (EFI_SUBCLASS_SPECIFIC | 0x00000016)\r
-#define EFI_SW_BS_PC_EXIT                           (EFI_SUBCLASS_SPECIFIC | 0x00000017)\r
-#define EFI_SW_BS_PC_UNLOAD_IMAGE                   (EFI_SUBCLASS_SPECIFIC | 0x00000018)\r
-#define EFI_SW_BS_PC_EXIT_BOOT_SERVICES             (EFI_SUBCLASS_SPECIFIC | 0x00000019)\r
-#define EFI_SW_BS_PC_GET_NEXT_MONOTONIC_COUNT       (EFI_SUBCLASS_SPECIFIC | 0x0000001A)\r
-#define EFI_SW_BS_PC_STALL                          (EFI_SUBCLASS_SPECIFIC | 0x0000001B)\r
-#define EFI_SW_BS_PC_SET_WATCHDOG_TIMER             (EFI_SUBCLASS_SPECIFIC | 0x0000001C)\r
-#define EFI_SW_BS_PC_CONNECT_CONTROLLER             (EFI_SUBCLASS_SPECIFIC | 0x0000001D)\r
-#define EFI_SW_BS_PC_DISCONNECT_CONTROLLER          (EFI_SUBCLASS_SPECIFIC | 0x0000001E)\r
-#define EFI_SW_BS_PC_OPEN_PROTOCOL                  (EFI_SUBCLASS_SPECIFIC | 0x0000001F)\r
-#define EFI_SW_BS_PC_CLOSE_PROTOCOL                 (EFI_SUBCLASS_SPECIFIC | 0x00000020)\r
-#define EFI_SW_BS_PC_OPEN_PROTOCOL_INFORMATION      (EFI_SUBCLASS_SPECIFIC | 0x00000021)\r
-#define EFI_SW_BS_PC_PROTOCOLS_PER_HANDLE           (EFI_SUBCLASS_SPECIFIC | 0x00000022)\r
-#define EFI_SW_BS_PC_LOCATE_HANDLE_BUFFER           (EFI_SUBCLASS_SPECIFIC | 0x00000023)\r
-#define EFI_SW_BS_PC_LOCATE_PROTOCOL                (EFI_SUBCLASS_SPECIFIC | 0x00000024)\r
-#define EFI_SW_BS_PC_INSTALL_MULTIPLE_INTERFACES    (EFI_SUBCLASS_SPECIFIC | 0x00000025)\r
-#define EFI_SW_BS_PC_UNINSTALL_MULTIPLE_INTERFACES  (EFI_SUBCLASS_SPECIFIC | 0x00000026)\r
-#define EFI_SW_BS_PC_CALCULATE_CRC_32               (EFI_SUBCLASS_SPECIFIC | 0x00000027)\r
-#define EFI_SW_BS_PC_COPY_MEM                       (EFI_SUBCLASS_SPECIFIC | 0x00000028)\r
-#define EFI_SW_BS_PC_SET_MEM                        (EFI_SUBCLASS_SPECIFIC | 0x00000029)\r
-\r
-//\r
-// Software Class EFI Runtime Services Subclass Progress Code definitions.\r
-//\r
-#define EFI_SW_RS_PC_GET_TIME                       (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_SW_RS_PC_SET_TIME                       (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_SW_RS_PC_GET_WAKEUP_TIME                (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-#define EFI_SW_RS_PC_SET_WAKEUP_TIME                (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-#define EFI_SW_RS_PC_SET_VIRTUAL_ADDRESS_MAP        (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
-#define EFI_SW_RS_PC_CONVERT_POINTER                (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
-#define EFI_SW_RS_PC_GET_VARIABLE                   (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
-#define EFI_SW_RS_PC_GET_NEXT_VARIABLE_NAME         (EFI_SUBCLASS_SPECIFIC | 0x00000007)\r
-#define EFI_SW_RS_PC_SET_VARIABLE                   (EFI_SUBCLASS_SPECIFIC | 0x00000008)\r
-#define EFI_SW_RS_PC_GET_NEXT_HIGH_MONOTONIC_COUNT  (EFI_SUBCLASS_SPECIFIC | 0x00000009)\r
-#define EFI_SW_RS_PC_RESET_SYSTEM                   (EFI_SUBCLASS_SPECIFIC | 0x0000000A)\r
-\r
-//\r
-// Software Class EFI DXE Services Subclass Progress Code definitions\r
-//\r
-#define EFI_SW_DS_PC_ADD_MEMORY_SPACE             (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_SW_DS_PC_ALLOCATE_MEMORY_SPACE        (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_SW_DS_PC_FREE_MEMORY_SPACE            (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-#define EFI_SW_DS_PC_REMOVE_MEMORY_SPACE          (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-#define EFI_SW_DS_PC_GET_MEMORY_SPACE_DESCRIPTOR  (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
-#define EFI_SW_DS_PC_SET_MEMORY_SPACE_ATTRIBUTES  (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
-#define EFI_SW_DS_PC_GET_MEMORY_SPACE_MAP         (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
-#define EFI_SW_DS_PC_ADD_IO_SPACE                 (EFI_SUBCLASS_SPECIFIC | 0x00000007)\r
-#define EFI_SW_DS_PC_ALLOCATE_IO_SPACE            (EFI_SUBCLASS_SPECIFIC | 0x00000008)\r
-#define EFI_SW_DS_PC_FREE_IO_SPACE                (EFI_SUBCLASS_SPECIFIC | 0x00000009)\r
-#define EFI_SW_DS_PC_REMOVE_IO_SPACE              (EFI_SUBCLASS_SPECIFIC | 0x0000000A)\r
-#define EFI_SW_DS_PC_GET_IO_SPACE_DESCRIPTOR      (EFI_SUBCLASS_SPECIFIC | 0x0000000B)\r
-#define EFI_SW_DS_PC_GET_IO_SPACE_MAP             (EFI_SUBCLASS_SPECIFIC | 0x0000000C)\r
-#define EFI_SW_DS_PC_DISPATCH                     (EFI_SUBCLASS_SPECIFIC | 0x0000000D)\r
-#define EFI_SW_DS_PC_SCHEDULE                     (EFI_SUBCLASS_SPECIFIC | 0x0000000E)\r
-#define EFI_SW_DS_PC_TRUST                        (EFI_SUBCLASS_SPECIFIC | 0x0000000F)\r
-#define EFI_SW_DS_PC_PROCESS_FIRMWARE_VOLUME      (EFI_SUBCLASS_SPECIFIC | 0x00000010)\r
-\r
-//\r
-// Software Class Error Code definitions.\r
-// These are shared by all subclasses.\r
-//\r
-#define EFI_SW_EC_NON_SPECIFIC            0x00000000\r
-#define EFI_SW_EC_LOAD_ERROR              0x00000001\r
-#define EFI_SW_EC_INVALID_PARAMETER       0x00000002\r
-#define EFI_SW_EC_UNSUPPORTED             0x00000003\r
-#define EFI_SW_EC_INVALID_BUFFER          0x00000004\r
-#define EFI_SW_EC_OUT_OF_RESOURCES        0x00000005\r
-#define EFI_SW_EC_ABORTED                 0x00000006\r
-#define EFI_SW_EC_ILLEGAL_SOFTWARE_STATE  0x00000007\r
-#define EFI_SW_EC_ILLEGAL_HARDWARE_STATE  0x00000008\r
-#define EFI_SW_EC_START_ERROR             0x00000009\r
-#define EFI_SW_EC_BAD_DATE_TIME           0x0000000A\r
-#define EFI_SW_EC_CFG_INVALID             0x0000000B\r
-#define EFI_SW_EC_CFG_CLR_REQUEST         0x0000000C\r
-#define EFI_SW_EC_CFG_DEFAULT             0x0000000D\r
-#define EFI_SW_EC_PWD_INVALID             0x0000000E\r
-#define EFI_SW_EC_PWD_CLR_REQUEST         0x0000000F\r
-#define EFI_SW_EC_PWD_CLEARED             0x00000010\r
-#define EFI_SW_EC_EVENT_LOG_FULL          0x00000011\r
-\r
-//\r
-// Software Class Unspecified Subclass Error Code definitions.\r
-//\r
-//\r
-// Software Class SEC Subclass Error Code definitions.\r
-//\r
-//\r
-// Software Class PEI Core Subclass Error Code definitions.\r
-//\r
-#define EFI_SW_PEI_CORE_EC_DXE_CORRUPT  (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-\r
-//\r
-// Software Class PEI Module Subclass Error Code definitions.\r
-//\r
-#define EFI_SW_PEIM_EC_NO_RECOVERY_CAPSULE        (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_SW_PEIM_EC_INVALID_CAPSULE_DESCRIPTOR (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-\r
-//\r
-// Software Class DXE Core Subclass Error Code definitions.\r
-//\r
-#define EFI_SW_CSM_LEGACY_ROM_INIT  (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-//\r
-// Software Class DXE Boot Service Driver Subclass Error Code definitions.\r
-//\r
-#define EFI_SW_DXE_BS_EC_LEGACY_OPROM_NO_SPACE  (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-\r
-//\r
-// Software Class DXE Runtime Service Driver Subclass Error Code definitions.\r
-//\r
-//\r
-// Software Class SMM Driver Subclass Error Code definitions.\r
-//\r
-//\r
-// Software Class EFI Application Subclass Error Code definitions.\r
-//\r
-//\r
-// Software Class EFI OS Loader Subclass Error Code definitions.\r
-//\r
-//\r
-// Software Class EFI RT Subclass Error Code definitions.\r
-//\r
-//\r
-// Software Class EFI AL Subclass Error Code definitions.\r
-//\r
-//\r
-// Software Class EBC Exception Subclass Error Code definitions.\r
-// These exceptions are derived from the debug protocol definitions in the EFI\r
-// specification.\r
-//\r
-#define EFI_SW_EC_EBC_UNDEFINED             (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_UNDEFINED)\r
-#define EFI_SW_EC_EBC_DIVIDE_ERROR          (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_DIVIDE_ERROR)\r
-#define EFI_SW_EC_EBC_DEBUG                 (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_DEBUG)\r
-#define EFI_SW_EC_EBC_BREAKPOINT            (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_BREAKPOINT)\r
-#define EFI_SW_EC_EBC_OVERFLOW              (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_OVERFLOW)\r
-#define EFI_SW_EC_EBC_INVALID_OPCODE        (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_INVALID_OPCODE)\r
-#define EFI_SW_EC_EBC_STACK_FAULT           (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_STACK_FAULT)\r
-#define EFI_SW_EC_EBC_ALIGNMENT_CHECK       (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_ALIGNMENT_CHECK)\r
-#define EFI_SW_EC_EBC_INSTRUCTION_ENCODING  (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_INSTRUCTION_ENCODING)\r
-#define EFI_SW_EC_EBC_BAD_BREAK             (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_BAD_BREAK)\r
-#define EFI_SW_EC_EBC_STEP                  (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_STEP)\r
-\r
-//\r
-// Software Class IA32 Exception Subclass Error Code definitions.\r
-// These exceptions are derived from the debug protocol definitions in the EFI\r
-// specification.\r
-//\r
-#define EFI_SW_EC_IA32_DIVIDE_ERROR     (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_DIVIDE_ERROR)\r
-#define EFI_SW_EC_IA32_DEBUG            (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_DEBUG)\r
-#define EFI_SW_EC_IA32_NMI              (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_NMI)\r
-#define EFI_SW_EC_IA32_BREAKPOINT       (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_BREAKPOINT)\r
-#define EFI_SW_EC_IA32_OVERFLOW         (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_OVERFLOW)\r
-#define EFI_SW_EC_IA32_BOUND            (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_BOUND)\r
-#define EFI_SW_EC_IA32_INVALID_OPCODE   (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_INVALID_OPCODE)\r
-#define EFI_SW_EC_IA32_DOUBLE_FAULT     (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_DOUBLE_FAULT)\r
-#define EFI_SW_EC_IA32_INVALID_TSS      (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_INVALID_TSS)\r
-#define EFI_SW_EC_IA32_SEG_NOT_PRESENT  (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_SEG_NOT_PRESENT)\r
-#define EFI_SW_EC_IA32_STACK_FAULT      (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_STACK_FAULT)\r
-#define EFI_SW_EC_IA32_GP_FAULT         (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_GP_FAULT)\r
-#define EFI_SW_EC_IA32_PAGE_FAULT       (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_PAGE_FAULT)\r
-#define EFI_SW_EC_IA32_FP_ERROR         (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_FP_ERROR)\r
-#define EFI_SW_EC_IA32_ALIGNMENT_CHECK  (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_ALIGNMENT_CHECK)\r
-#define EFI_SW_EC_IA32_MACHINE_CHECK    (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_MACHINE_CHECK)\r
-#define EFI_SW_EC_IA32_SIMD             (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_SIMD)\r
-\r
-//\r
-// Software Class X64 Exception Subclass Error Code definitions.\r
-// These exceptions are derived from the debug protocol definitions in the EFI\r
-// specification.\r
-//\r
-#define EFI_SW_EC_X64_DIVIDE_ERROR      (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_DIVIDE_ERROR)\r
-#define EFI_SW_EC_X64_DEBUG             (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_DEBUG)\r
-#define EFI_SW_EC_X64_NMI               (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_NMI)\r
-#define EFI_SW_EC_X64_BREAKPOINT        (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_BREAKPOINT)\r
-#define EFI_SW_EC_X64_OVERFLOW          (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_OVERFLOW)\r
-#define EFI_SW_EC_X64_BOUND             (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_BOUND)\r
-#define EFI_SW_EC_X64_INVALID_OPCODE    (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_INVALID_OPCODE)\r
-#define EFI_SW_EC_X64_DOUBLE_FAULT      (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_DOUBLE_FAULT)\r
-#define EFI_SW_EC_X64_INVALID_TSS       (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_INVALID_TSS)\r
-#define EFI_SW_EC_X64_SEG_NOT_PRESENT   (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_SEG_NOT_PRESENT)\r
-#define EFI_SW_EC_X64_STACK_FAULT       (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_STACK_FAULT)\r
-#define EFI_SW_EC_X64_GP_FAULT          (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_GP_FAULT)\r
-#define EFI_SW_EC_X64_PAGE_FAULT        (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_PAGE_FAULT)\r
-#define EFI_SW_EC_X64_FP_ERROR          (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_FP_ERROR)\r
-#define EFI_SW_EC_X64_ALIGNMENT_CHECK   (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_ALIGNMENT_CHECK)\r
-#define EFI_SW_EC_X64_MACHINE_CHECK     (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_MACHINE_CHECK)\r
-#define EFI_SW_EC_X64_SIMD              (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_SIMD)\r
-\r
-//\r
-// Software Class IPF Exception Subclass Error Code definitions.\r
-// These exceptions are derived from the debug protocol definitions in the EFI\r
-// specification.\r
-//\r
-#define EFI_SW_EC_IPF_ALT_DTLB            (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_ALT_DTLB)\r
-#define EFI_SW_EC_IPF_DNESTED_TLB         (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_DNESTED_TLB)\r
-#define EFI_SW_EC_IPF_BREAKPOINT          (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_BREAKPOINT)\r
-#define EFI_SW_EC_IPF_EXTERNAL_INTERRUPT  (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_EXTERNAL_INTERRUPT)\r
-#define EFI_SW_EC_IPF_GEN_EXCEPT          (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_GEN_EXCEPT)\r
-#define EFI_SW_EC_IPF_NAT_CONSUMPTION     (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_NAT_CONSUMPTION)\r
-#define EFI_SW_EC_IPF_DEBUG_EXCEPT        (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_DEBUG_EXCEPT)\r
-#define EFI_SW_EC_IPF_UNALIGNED_ACCESS    (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_UNALIGNED_ACCESS)\r
-#define EFI_SW_EC_IPF_FP_FAULT            (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_FP_FAULT)\r
-#define EFI_SW_EC_IPF_FP_TRAP             (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_FP_TRAP)\r
-#define EFI_SW_EC_IPF_TAKEN_BRANCH        (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_TAKEN_BRANCH)\r
-#define EFI_SW_EC_IPF_SINGLE_STEP         (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_SINGLE_STEP)\r
-\r
-\r
-//\r
-// Software Class PEI Service Subclass Error Code definitions.\r
-//\r
-//\r
-// Software Class EFI Boot Service Subclass Error Code definitions.\r
-//\r
-//\r
-// Software Class EFI Runtime Service Subclass Error Code definitions.\r
-//\r
-//\r
-// Software Class EFI DXE Service Subclass Error Code definitions.\r
-//\r
-\r
-///////////////////////////////////////////////////////////////////////////////\r
-// Section 7\r
-///////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Debug Code definitions for all classes and subclass\r
-// Only one debug code is defined at this point and should\r
-// be used for anything that gets sent to debug stream.\r
-//\r
-#define EFI_DC_UNSPECIFIED  0x0\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Common/FrameworkStatusCodeDataTypeId.h b/IntelFrameworkPkg/Include/Common/FrameworkStatusCodeDataTypeId.h
deleted file mode 100644 (file)
index 92c222a..0000000
+++ /dev/null
@@ -1,433 +0,0 @@
-/** @file\r
-  This file defines the data structures to support Status Code Data.\r
-\r
-  Copyright (c) 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
-  Module Name:  FrameworkStatusCodeDataTypeId.h\r
-\r
-  @par Revision Reference:\r
-  These definitions are from Framework of EFI Status Code Spec\r
-  Version 0.92.\r
-\r
-**/\r
-\r
-#ifndef __FRAMEWORK_STATUS_CODE_DATA_TYPE_ID_H__\r
-#define __FRAMEWORK_STATUS_CODE_DATA_TYPE_ID_H__\r
-\r
-#include <Common/DataHubRecords.h>\r
-#include <Protocol/DebugSupport.h>\r
-\r
-///\r
-/// The size of string\r
-///\r
-#define EFI_STATUS_CODE_DATA_MAX_STRING_SIZE  150\r
-\r
-///\r
-/// This is the max data size including all the headers which can be passed\r
-/// as Status Code data. This data should be multiple of 8 byte\r
-/// to avoid any kind of boundary issue. Also, sum of this data size (inclusive\r
-/// of size of EFI_STATUS_CODE_DATA should not exceed the max record size of\r
-/// data hub\r
-///\r
-#define EFI_STATUS_CODE_DATA_MAX_SIZE 200\r
-\r
-#pragma pack(1)\r
-typedef enum {\r
-  EfiStringAscii,\r
-  EfiStringUnicode,\r
-  EfiStringToken\r
-} EFI_STRING_TYPE;\r
-\r
-typedef struct {\r
-  EFI_HII_HANDLE  Handle;\r
-  STRING_REF      Token;\r
-} EFI_STATUS_CODE_STRING_TOKEN;\r
-\r
-typedef union {\r
-  CHAR8                         *Ascii;\r
-  CHAR16                        *Unicode;\r
-  EFI_STATUS_CODE_STRING_TOKEN  Hii;\r
-} EFI_STATUS_CODE_STRING;\r
-\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA                          DataHeader;\r
-  EFI_STRING_TYPE                               StringType;\r
-  EFI_STATUS_CODE_STRING                        String;\r
-} EFI_STATUS_CODE_STRING_DATA;\r
-\r
-#pragma pack()\r
-\r
-#pragma pack(1)\r
-\r
-typedef struct {\r
-  UINT32  ErrorLevel;\r
-  //\r
-  // 12 * sizeof (UINT64) Var Arg stack\r
-  //\r
-  // ascii DEBUG () Format string\r
-  //\r
-} EFI_DEBUG_INFO;\r
-\r
-#pragma pack()\r
-\r
-//\r
-// declaration for EFI_EXP_DATA. This may change\r
-//\r
-// typedef UINTN   EFI_EXP_DATA;\r
-\r
-///\r
-/// Voltage Extended Error Data\r
-///\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA  DataHeader;\r
-  EFI_EXP_BASE10_DATA   Voltage;\r
-  EFI_EXP_BASE10_DATA   Threshold;\r
-} EFI_COMPUTING_UNIT_VOLTAGE_ERROR_DATA;\r
-\r
-typedef struct {\r
-  EFI_EXP_BASE10_DATA   Voltage;\r
-  EFI_EXP_BASE10_DATA   Threshold;\r
-} EFI_COMPUTING_UNIT_VOLTAGE_ERROR_DATA_PAYLOAD;\r
-\r
-///\r
-/// Microcode Update Extended Error Data\r
-///\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA  DataHeader;\r
-  UINT32                Version;\r
-} EFI_COMPUTING_UNIT_MICROCODE_UPDATE_ERROR_DATA;\r
-\r
-typedef struct {\r
-  UINT32                Version;\r
-} EFI_COMPUTING_UNIT_MICROCODE_UPDATE_ERROR_DATA_PAYLOAD;\r
-\r
-///\r
-/// Asynchronous Timer Extended Error Data\r
-///\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA  DataHeader;\r
-  EFI_EXP_BASE10_DATA   TimerLimit;\r
-} EFI_COMPUTING_UNIT_TIMER_EXPIRED_ERROR_DATA;\r
-\r
-typedef struct {\r
-  EFI_EXP_BASE10_DATA   TimerLimit;\r
-} EFI_COMPUTING_UNIT_TIMER_EXPIRED_ERROR_DATA_PAYLOAD;\r
-\r
-///\r
-/// Host Processor Mismatch Extended Error Data\r
-///\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA  DataHeader;\r
-  UINT32                Instance;\r
-  UINT16                Attributes;\r
-} EFI_HOST_PROCESSOR_MISMATCH_ERROR_DATA;\r
-\r
-typedef struct {\r
-  UINT32                Instance;\r
-  UINT16                Attributes;\r
-} EFI_HOST_PROCESSOR_MISMATCH_ERROR_DATA_PAYLOAD;\r
-\r
-//\r
-// EFI_COMPUTING_UNIT_MISMATCH_ATTRIBUTES\r
-// All other attributes are reserved for future use and\r
-// must be initialized to 0.\r
-//\r
-#define EFI_COMPUTING_UNIT_MISMATCH_SPEED       0x0001\r
-#define EFI_COMPUTING_UNIT_MISMATCH_FSB_SPEED   0x0002\r
-#define EFI_COMPUTING_UNIT_MISMATCH_FAMILY      0x0004\r
-#define EFI_COMPUTING_UNIT_MISMATCH_MODEL       0x0008\r
-#define EFI_COMPUTING_UNIT_MISMATCH_STEPPING    0x0010\r
-#define EFI_COMPUTING_UNIT_MISMATCH_CACHE_SIZE  0x0020\r
-#define EFI_COMPUTING_UNIT_MISMATCH_OEM1        0x1000\r
-#define EFI_COMPUTING_UNIT_MISMATCH_OEM2        0x2000\r
-#define EFI_COMPUTING_UNIT_MISMATCH_OEM3        0x4000\r
-#define EFI_COMPUTING_UNIT_MISMATCH_OEM4        0x8000\r
-\r
-///\r
-/// Thermal Extended Error Data\r
-///\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA  DataHeader;\r
-  EFI_EXP_BASE10_DATA   Temperature;\r
-  EFI_EXP_BASE10_DATA   Threshold;\r
-} EFI_COMPUTING_UNIT_THERMAL_ERROR_DATA;\r
-\r
-typedef struct {\r
-  EFI_EXP_BASE10_DATA   Temperature;\r
-  EFI_EXP_BASE10_DATA   Threshold;\r
-} EFI_COMPUTING_UNIT_THERMAL_ERROR_DATA_PAYLOAD;\r
-\r
-///\r
-/// Processor Disabled Extended Error Data\r
-///\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA  DataHeader;\r
-  UINT32                Cause;\r
-  BOOLEAN               SoftwareDisabled;\r
-} EFI_COMPUTING_UNIT_CPU_DISABLED_ERROR_DATA;\r
-\r
-typedef struct {\r
-  UINT32                Cause;\r
-  BOOLEAN               SoftwareDisabled;\r
-} EFI_COMPUTING_UNIT_CPU_DISABLED_ERROR_DATA_PAYLOAD;\r
-\r
-typedef enum {\r
-  EfiInitCacheDataOnly,\r
-  EfiInitCacheInstrOnly,\r
-  EfiInitCacheBoth,\r
-  EfiInitCacheUnspecified\r
-} EFI_INIT_CACHE_TYPE;\r
-\r
-///\r
-/// Embedded cache init extended data\r
-///\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA  DataHeader;\r
-  UINT32                Level;\r
-  EFI_INIT_CACHE_TYPE   Type;\r
-} EFI_CACHE_INIT_DATA;\r
-\r
-typedef struct {\r
-  UINT32                Level;\r
-  EFI_INIT_CACHE_TYPE   Type;\r
-} EFI_CACHE_INIT_DATA_PAYLOAD;\r
-\r
-//\r
-// Memory Extended Error Data\r
-//\r
-\r
-///\r
-/// Memory Error Granularity Definition\r
-///\r
-typedef UINT8 EFI_MEMORY_ERROR_GRANULARITY;\r
-\r
-///\r
-/// Memory Error Operation Definition\r
-///\r
-typedef UINT8 EFI_MEMORY_ERROR_OPERATION;\r
-\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA          DataHeader;\r
-  EFI_MEMORY_ERROR_GRANULARITY  Granularity;\r
-  EFI_MEMORY_ERROR_OPERATION    Operation;\r
-  UINTN                         Syndrome;\r
-  EFI_PHYSICAL_ADDRESS          Address;\r
-  UINTN                         Resolution;\r
-} EFI_MEMORY_EXTENDED_ERROR_DATA;\r
-\r
-typedef struct {\r
-  EFI_MEMORY_ERROR_GRANULARITY  Granularity;\r
-  EFI_MEMORY_ERROR_OPERATION    Operation;\r
-  UINTN                         Syndrome;\r
-  EFI_PHYSICAL_ADDRESS          Address;\r
-  UINTN                         Resolution;\r
-} EFI_MEMORY_EXTENDED_ERROR_DATA_PAYLOAD;\r
-\r
-//\r
-// Memory Error Granularities\r
-//\r
-#define EFI_MEMORY_ERROR_OTHER      0x01\r
-#define EFI_MEMORY_ERROR_UNKNOWN    0x02\r
-#define EFI_MEMORY_ERROR_DEVICE     0x03\r
-#define EFI_MEMORY_ERROR_PARTITION  0x04\r
-\r
-//\r
-// Memory Error Operations\r
-//\r
-#define EFI_MEMORY_OPERATION_OTHER          0x01\r
-#define EFI_MEMORY_OPERATION_UNKNOWN        0x02\r
-#define EFI_MEMORY_OPERATION_READ           0x03\r
-#define EFI_MEMORY_OPERATION_WRITE          0x04\r
-#define EFI_MEMORY_OPERATION_PARTIAL_WRITE  0x05\r
-\r
-//\r
-// Define shorthands to describe Group Operations\r
-// Many memory init operations are essentially group\r
-// operations.\r
-\r
-/// A shorthand to describe that the operation is performed\r
-/// on multiple devices within the array\r
-///\r
-#define EFI_MULTIPLE_MEMORY_DEVICE_OPERATION  0xfffe\r
-///\r
-/// A shorthand to describe that the operation is performed on all devices within the array\r
-///\r
-#define EFI_ALL_MEMORY_DEVICE_OPERATION 0xffff\r
-///\r
-/// A shorthand to describe that the operation is performed on multiple arrays\r
-///\r
-#define EFI_MULTIPLE_MEMORY_ARRAY_OPERATION 0xfffe\r
-///\r
-/// A shorthand to describe that the operation is performed on all the arrays\r
-///\r
-#define EFI_ALL_MEMORY_ARRAY_OPERATION  0xffff\r
-\r
-//\r
-// DIMM number\r
-//\r
-#pragma pack(1)\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA  DataHeader;\r
-  UINT16                Array;\r
-  UINT16                Device;\r
-} EFI_STATUS_CODE_DIMM_NUMBER;\r
-\r
-typedef struct {\r
-  UINT16                Array;\r
-  UINT16                Device;\r
-} EFI_STATUS_CODE_DIMM_NUMBER_PAYLOAD;\r
-#pragma pack()\r
-\r
-///\r
-/// Memory Module Mismatch Extended Error Data\r
-///\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA        DataHeader;\r
-  EFI_STATUS_CODE_DIMM_NUMBER Instance;\r
-} EFI_MEMORY_MODULE_MISMATCH_ERROR_DATA;\r
-\r
-typedef struct {\r
-  EFI_STATUS_CODE_DIMM_NUMBER Instance;\r
-} EFI_MEMORY_MODULE_MISMATCH_ERROR_DATA_PAYLOAD;\r
-\r
-///\r
-/// Memory Range Extended Data\r
-///\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA  DataHeader;\r
-  EFI_PHYSICAL_ADDRESS  Start;\r
-  EFI_PHYSICAL_ADDRESS  Length;\r
-} EFI_MEMORY_RANGE_EXTENDED_DATA;\r
-\r
-typedef struct {\r
-  EFI_PHYSICAL_ADDRESS  Start;\r
-  EFI_PHYSICAL_ADDRESS  Length;\r
-} EFI_MEMORY_RANGE_EXTENDED_DATA_PAYLOAD;\r
-\r
-///\r
-/// Device handle Extended Data. Used for many\r
-/// errors and progress codes to point to the device.\r
-///\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA  DataHeader;\r
-  EFI_HANDLE            Handle;\r
-} EFI_DEVICE_HANDLE_EXTENDED_DATA;\r
-\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA                 DataHeader;\r
-  UINT8                                *DevicePath;\r
-} EFI_DEVICE_PATH_EXTENDED_DATA;\r
-\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA           DataHeader;\r
-  EFI_HANDLE                     ControllerHandle;\r
-  EFI_HANDLE                     DriverBindingHandle;\r
-  UINT16                         DevicePathSize;\r
-  UINT8                          *RemainingDevicePath;\r
-} EFI_STATUS_CODE_START_EXTENDED_DATA;\r
-\r
-typedef struct {\r
-  EFI_HANDLE            Handle;\r
-} EFI_DEVICE_HANDLE_EXTENDED_DATA_PAYLOAD;\r
-\r
-typedef struct {\r
-  UINT8                                *DevicePath;\r
-} EFI_DEVICE_PATH_EXTENDED_DATA_PAYLOAD;\r
-\r
-typedef struct {\r
-  EFI_HANDLE                     ControllerHandle;\r
-  EFI_HANDLE                     DriverBindingHandle;\r
-  UINT16                         DevicePathSize;\r
-  UINT8                          *RemainingDevicePath;\r
-} EFI_STATUS_CODE_START_EXTENDED_DATA_PAYLOAD;\r
-\r
-///\r
-/// Resource Allocation Failure Extended Error Data\r
-///\r
-\r
-/*\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA      DataHeader;\r
-  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;\r
-  UINT32                    Bar;\r
-  VOID                      *ReqRes;\r
-  VOID                      *AllocRes;\r
-} EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA;\r
-*/\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA               DataHeader;\r
-  UINT32                             Bar;\r
-  UINT16                             DevicePathSize;\r
-  UINT16                             ReqResSize;\r
-  UINT16                             AllocResSize;\r
-  UINT8                              *DevicePath;\r
-  UINT8                              *ReqRes;\r
-  UINT8                              *AllocRes;\r
-} EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA;\r
-\r
-typedef struct {\r
-  UINT32                             Bar;\r
-  UINT16                             DevicePathSize;\r
-  UINT16                             ReqResSize;\r
-  UINT16                             AllocResSize;\r
-  UINT8                              *DevicePath;\r
-  UINT8                              *ReqRes;\r
-  UINT8                              *AllocRes;\r
-} EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA_PAYLOAD;\r
-\r
-///\r
-/// Extended Error Data for Assert\r
-///\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA        DataHeader;\r
-  UINT32                      LineNumber;\r
-  UINT32                      FileNameSize;\r
-  EFI_STATUS_CODE_STRING_DATA *FileName;\r
-} EFI_DEBUG_ASSERT_DATA;\r
-\r
-typedef struct {\r
-  UINT32                      LineNumber;\r
-  UINT32                      FileNameSize;\r
-  EFI_STATUS_CODE_STRING_DATA *FileName;\r
-} EFI_DEBUG_ASSERT_DATA_PAYLOAD;\r
-\r
-///\r
-/// System Context Data EBC/IA32/IPF\r
-///\r
-typedef union {\r
-  EFI_SYSTEM_CONTEXT_EBC  SystemContextEbc;\r
-  EFI_SYSTEM_CONTEXT_IA32 SystemContextIa32;\r
-  EFI_SYSTEM_CONTEXT_IPF  SystemContextIpf;\r
-} EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT;\r
-\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA                  DataHeader;\r
-  EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT  Context;\r
-} EFI_STATUS_CODE_EXCEP_EXTENDED_DATA;\r
-\r
-typedef struct {\r
-  EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT  Context;\r
-} EFI_STATUS_CODE_EXCEP_EXTENDED_DATA_PAYLOAD;\r
-\r
-///\r
-/// Legacy Oprom extended data\r
-///\r
-typedef struct {\r
-  EFI_STATUS_CODE_DATA  DataHeader;\r
-  EFI_HANDLE            DeviceHandle;\r
-  EFI_PHYSICAL_ADDRESS  RomImageBase;\r
-} EFI_LEGACY_OPROM_EXTENDED_DATA;\r
-\r
-typedef struct {\r
-  EFI_HANDLE            DeviceHandle;\r
-  EFI_PHYSICAL_ADDRESS  RomImageBase;\r
-} EFI_LEGACY_OPROM_EXTENDED_DATA_PAYLOAD;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Framework/DataHubRecords.h b/IntelFrameworkPkg/Include/Framework/DataHubRecords.h
new file mode 100644 (file)
index 0000000..cd7fe97
--- /dev/null
@@ -0,0 +1,1917 @@
+/** @file\r
+  This file defines GUIDs and associated data structures for records posted to the Data Hub.\r
+  The producers of these records use these definitions to construct records.\r
+  The consumers of these records use these definitions to retrieve, filter and parse records.\r
+\r
+  Copyright (c) 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
+  Module Name:  DataHubRecords.h\r
+\r
+  @par Revision Reference:\r
+  DataHubRecord.h include all data hub sub class defitions from Cache subclass\r
+  spec 0.9, DataHub SubClass spec 0.9, Memory SubClass Spec 0.9, Processor\r
+  Subclass spec 0.9,Misc SubClass spec 0.9.\r
+\r
+**/\r
+\r
+#ifndef _DATAHUB_RECORDS_H_\r
+#define _DATAHUB_RECORDS_H_\r
+\r
+#include <PiPei.h>\r
+#include <Protocol/DevicePath.h>\r
+\r
+#define EFI_PROCESSOR_SUBCLASS_VERSION    0x00010000\r
+\r
+#include <Protocol/DevicePath.h>\r
+\r
+#pragma pack(1)\r
+\r
+typedef struct _USB_PORT_DEVICE_PATH {\r
+  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
+  PCI_DEVICE_PATH           PciBusDevicePath;\r
+  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
+} USB_PORT_DEVICE_PATH;\r
+\r
+//\r
+// IDE\r
+//\r
+typedef struct _IDE_DEVICE_PATH {\r
+  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
+  PCI_DEVICE_PATH           PciBusDevicePath;\r
+  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
+} IDE_DEVICE_PATH;\r
+\r
+//\r
+// RMC Connector\r
+//\r
+typedef struct _RMC_CONN_DEVICE_PATH {\r
+  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
+  PCI_DEVICE_PATH           PciBridgeDevicePath;\r
+  PCI_DEVICE_PATH           PciBusDevicePath;\r
+  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
+} RMC_CONN_DEVICE_PATH;\r
+\r
+//\r
+// RIDE\r
+//\r
+typedef struct _RIDE_DEVICE_PATH {\r
+  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
+  PCI_DEVICE_PATH           PciBridgeDevicePath;\r
+  PCI_DEVICE_PATH           PciBusDevicePath;\r
+  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
+} RIDE_DEVICE_PATH;\r
+\r
+//\r
+// Gigabit NIC\r
+//\r
+typedef struct _GB_NIC_DEVICE_PATH {\r
+  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
+  PCI_DEVICE_PATH           PciBridgeDevicePath;\r
+  PCI_DEVICE_PATH           PciXBridgeDevicePath;\r
+  PCI_DEVICE_PATH           PciXBusDevicePath;\r
+  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
+} GB_NIC_DEVICE_PATH;\r
+\r
+//\r
+// P/S2 Connector\r
+//\r
+typedef struct _PS2_CONN_DEVICE_PATH {\r
+  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
+  PCI_DEVICE_PATH           LpcBridgeDevicePath;\r
+  ACPI_HID_DEVICE_PATH      LpcBusDevicePath;\r
+  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
+} PS2_CONN_DEVICE_PATH;\r
+\r
+//\r
+// Serial Port Connector\r
+//\r
+typedef struct _SERIAL_CONN_DEVICE_PATH {\r
+  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
+  PCI_DEVICE_PATH           LpcBridgeDevicePath;\r
+  ACPI_HID_DEVICE_PATH      LpcBusDevicePath;\r
+  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
+} SERIAL_CONN_DEVICE_PATH;\r
+\r
+//\r
+// Parallel Port Connector\r
+//\r
+typedef struct _PARALLEL_CONN_DEVICE_PATH {\r
+  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
+  PCI_DEVICE_PATH           LpcBridgeDevicePath;\r
+  ACPI_HID_DEVICE_PATH      LpcBusDevicePath;\r
+  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
+} PARALLEL_CONN_DEVICE_PATH;\r
+\r
+//\r
+// Floopy Connector\r
+//\r
+typedef struct _FLOOPY_CONN_DEVICE_PATH {\r
+  ACPI_HID_DEVICE_PATH      PciRootBridgeDevicePath;\r
+  PCI_DEVICE_PATH           LpcBridgeDevicePath;\r
+  ACPI_HID_DEVICE_PATH      LpcBusDevicePath;\r
+  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
+} FLOOPY_CONN_DEVICE_PATH;\r
+\r
+typedef union _EFI_MISC_PORT_DEVICE_PATH {\r
+  USB_PORT_DEVICE_PATH      UsbDevicePath;\r
+  IDE_DEVICE_PATH           IdeDevicePath;\r
+  RMC_CONN_DEVICE_PATH      RmcConnDevicePath;\r
+  RIDE_DEVICE_PATH          RideDevicePath;\r
+  GB_NIC_DEVICE_PATH        GbNicDevicePath;\r
+  PS2_CONN_DEVICE_PATH      Ps2ConnDevicePath;\r
+  SERIAL_CONN_DEVICE_PATH   SerialConnDevicePath;\r
+  PARALLEL_CONN_DEVICE_PATH ParallelConnDevicePath;\r
+  FLOOPY_CONN_DEVICE_PATH   FloppyConnDevicePath;\r
+} EFI_MISC_PORT_DEVICE_PATH;\r
+\r
+#pragma pack()\r
+\r
+//\r
+// String Token Definition\r
+//\r
+#define EFI_STRING_TOKEN    UINT16\r
+\r
+typedef struct {\r
+  UINT32    Version;\r
+  UINT32    HeaderSize;\r
+  UINT16    Instance;\r
+  UINT16    SubInstance;\r
+  UINT32    RecordType;\r
+} EFI_SUBCLASS_TYPE1_HEADER;\r
+\r
+typedef struct {\r
+  EFI_GUID    ProducerName;\r
+  UINT16      Instance;\r
+  UINT16      SubInstance;\r
+} EFI_INTER_LINK_DATA;\r
+\r
+\r
+//\r
+// EXP data\r
+//\r
+\r
+typedef struct {\r
+  UINT16    Value;\r
+  UINT16    Exponent;\r
+} EFI_EXP_BASE2_DATA;\r
+\r
+\r
+typedef struct {\r
+  UINT16    Value;\r
+  UINT16    Exponent;\r
+} EFI_EXP_BASE10_DATA;\r
+\r
+typedef EFI_EXP_BASE10_DATA   EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA;\r
+\r
+typedef EFI_EXP_BASE10_DATA   EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA;\r
+\r
+typedef EFI_EXP_BASE10_DATA   EFI_PROCESSOR_CORE_FREQUENCY_DATA;\r
+\r
+typedef EFI_EXP_BASE10_DATA  *EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA;\r
+\r
+typedef EFI_EXP_BASE10_DATA  *EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA;\r
+\r
+typedef EFI_EXP_BASE10_DATA   EFI_PROCESSOR_FSB_FREQUENCY_DATA;\r
+\r
+typedef STRING_REF            EFI_PROCESSOR_VERSION_DATA;\r
+\r
+typedef STRING_REF            EFI_PROCESSOR_MANUFACTURER_DATA;\r
+\r
+typedef STRING_REF            EFI_PROCESSOR_SERIAL_NUMBER_DATA;\r
+\r
+typedef STRING_REF            EFI_PROCESSOR_ASSET_TAG_DATA;\r
+\r
+typedef struct {\r
+  UINT32  ProcessorSteppingId:4;\r
+  UINT32  ProcessorModel:     4;\r
+  UINT32  ProcessorFamily:    4;\r
+  UINT32  ProcessorType:      2;\r
+  UINT32  ProcessorReserved1: 2;\r
+  UINT32  ProcessorXModel:    4;\r
+  UINT32  ProcessorXFamily:   8;\r
+  UINT32  ProcessorReserved2: 4;\r
+} EFI_PROCESSOR_SIGNATURE;\r
+\r
+typedef struct {\r
+  UINT32  ProcessorBrandIndex :8;\r
+  UINT32  ProcessorClflush    :8;\r
+  UINT32  ProcessorReserved   :8;\r
+  UINT32  ProcessorDfltApicId :8;\r
+} EFI_PROCESSOR_MISC_INFO;\r
+\r
+typedef struct {\r
+  UINT32  ProcessorFpu:       1;\r
+  UINT32  ProcessorVme:       1;\r
+  UINT32  ProcessorDe:        1;\r
+  UINT32  ProcessorPse:       1;\r
+  UINT32  ProcessorTsc:       1;\r
+  UINT32  ProcessorMsr:       1;\r
+  UINT32  ProcessorPae:       1;\r
+  UINT32  ProcessorMce:       1;\r
+  UINT32  ProcessorCx8:       1;\r
+  UINT32  ProcessorApic:      1;\r
+  UINT32  ProcessorReserved1: 1;\r
+  UINT32  ProcessorSep:       1;\r
+  UINT32  ProcessorMtrr:      1;\r
+  UINT32  ProcessorPge:       1;\r
+  UINT32  ProcessorMca:       1;\r
+  UINT32  ProcessorCmov:      1;\r
+  UINT32  ProcessorPat:       1;\r
+  UINT32  ProcessorPse36:     1;\r
+  UINT32  ProcessorPsn:       1;\r
+  UINT32  ProcessorClfsh:     1;\r
+  UINT32  ProcessorReserved2: 1;\r
+  UINT32  ProcessorDs:        1;\r
+  UINT32  ProcessorAcpi:      1;\r
+  UINT32  ProcessorMmx:       1;\r
+  UINT32  ProcessorFxsr:      1;\r
+  UINT32  ProcessorSse:       1;\r
+  UINT32  ProcessorSse2:      1;\r
+  UINT32  ProcessorSs:        1;\r
+  UINT32  ProcessorReserved3: 1;\r
+  UINT32  ProcessorTm:        1;\r
+  UINT32  ProcessorReserved4: 2;\r
+} EFI_PROCESSOR_FEATURE_FLAGS;\r
+\r
+typedef struct {\r
+  EFI_PROCESSOR_SIGNATURE     Signature;\r
+  EFI_PROCESSOR_MISC_INFO     MiscInfo;\r
+  UINT32                      Reserved;\r
+  EFI_PROCESSOR_FEATURE_FLAGS FeatureFlags;\r
+} EFI_PROCESSOR_ID_DATA;\r
+\r
+typedef enum {\r
+  EfiProcessorOther    = 1,\r
+  EfiProcessorUnknown  = 2,\r
+  EfiCentralProcessor  = 3,\r
+  EfiMathProcessor     = 4,\r
+  EfiDspProcessor      = 5,\r
+  EfiVideoProcessor    = 6\r
+} EFI_PROCESSOR_TYPE_DATA;\r
+\r
+typedef enum {\r
+  EfiProcessorFamilyOther               = 1,\r
+  EfiProcessorFamilyUnknown             = 2,\r
+  EfiProcessorFamily8086                = 3,\r
+  EfiProcessorFamily80286               = 4,\r
+  EfiProcessorFamilyIntel386            = 5,\r
+  EfiProcessorFamilyIntel486            = 6,\r
+  EfiProcessorFamily8087                = 7,\r
+  EfiProcessorFamily80287               = 8,\r
+  EfiProcessorFamily80387               = 9,\r
+  EfiProcessorFamily80487               = 0x0A,\r
+  EfiProcessorFamilyPentium             = 0x0B,\r
+  EfiProcessorFamilyPentiumPro          = 0x0C,\r
+  EfiProcessorFamilyPentiumII           = 0x0D,\r
+  EfiProcessorFamilyPentiumMMX          = 0x0E,\r
+  EfiProcessorFamilyCeleron             = 0x0F,\r
+  EfiProcessorFamilyPentiumIIXeon       = 0x10,\r
+  EfiProcessorFamilyPentiumIII          = 0x11,\r
+  EfiProcessorFamilyM1                  = 0x12,\r
+  EfiProcessorFamilyM1Reserved1         = 0x13,\r
+  EfiProcessorFamilyM1Reserved2         = 0x14,\r
+  EfiProcessorFamilyM1Reserved3         = 0x15,\r
+  EfiProcessorFamilyM1Reserved4         = 0x16,\r
+  EfiProcessorFamilyM1Reserved5         = 0x17,\r
+  EfiProcessorFamilyM1Reserved6         = 0x18,\r
+  EfiProcessorFamilyK5                  = 0x19,\r
+  EfiProcessorFamilyK5Reserved1         = 0x1A,\r
+  EfiProcessorFamilyK5Reserved2         = 0x1B,\r
+  EfiProcessorFamilyK5Reserved3         = 0x1C,\r
+  EfiProcessorFamilyK5Reserved4         = 0x1D,\r
+  EfiProcessorFamilyK5Reserved5         = 0x1E,\r
+  EfiProcessorFamilyK5Reserved6         = 0x1F,\r
+  EfiProcessorFamilyPowerPC             = 0x20,\r
+  EfiProcessorFamilyPowerPC601          = 0x21,\r
+  EfiProcessorFamilyPowerPC603          = 0x22,\r
+  EfiProcessorFamilyPowerPC603Plus      = 0x23,\r
+  EfiProcessorFamilyPowerPC604          = 0x24,\r
+  EfiProcessorFamilyAlpha2              = 0x30,\r
+  EfiProcessorFamilyMips                = 0x40,\r
+  EfiProcessorFamilySparc               = 0x50,\r
+  EfiProcessorFamily68040               = 0x60,\r
+  EfiProcessorFamily68xxx               = 0x61,\r
+  EfiProcessorFamily68000               = 0x62,\r
+  EfiProcessorFamily68010               = 0x63,\r
+  EfiProcessorFamily68020               = 0x64,\r
+  EfiProcessorFamily68030               = 0x65,\r
+  EfiProcessorFamilyHobbit              = 0x70,\r
+  EfiProcessorFamilyWeitek              = 0x80,\r
+  EfiProcessorFamilyPARISC              = 0x90,\r
+  EfiProcessorFamilyV30                 = 0xA0,\r
+  EfiProcessorFamilyPentiumIIIXeon      = 0xB0,\r
+  EfiProcessorFamilyPentiumIIISpeedStep = 0xB1,\r
+  EfiProcessorFamilyPentium4            = 0xB2,\r
+  EfiProcessorFamilyIntelXeon           = 0xB3,\r
+  EfiProcessorFamilyAS400               = 0xB4,\r
+  EfiProcessorFamilyIntelXeonMP         = 0xB5,\r
+  EfiProcessorFamilyAMDAthlonXP         = 0xB6,\r
+  EfiProcessorFamilyAMDAthlonMP         = 0xB7,\r
+  EfiProcessorFamilyIntelPentiumM       = 0xB9,\r
+  EfiProcessorFamilyIntelCeleronD       = 0xBA,\r
+  EfiProcessorFamilyIntelPentiumD       = 0xBB,\r
+  EfiProcessorFamilyIntelPentiumEx      = 0xBC,\r
+  EfiProcessorFamilyIBM390              = 0xC8,\r
+  EfiProcessorFamilyG4                  = 0xC9,\r
+  EfiProcessorFamilyG5                  = 0xCA,\r
+  EfiProcessorFamilyi860                = 0xFA,\r
+  EfiProcessorFamilyi960                = 0xFB\r
+} EFI_PROCESSOR_FAMILY_DATA;\r
+\r
+typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_VOLTAGE_DATA;\r
+\r
+typedef EFI_PHYSICAL_ADDRESS EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA;\r
+\r
+typedef UINT32 EFI_PROCESSOR_APIC_ID_DATA;\r
+\r
+typedef UINT32 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA;\r
+\r
+typedef enum {\r
+  EfiProcessorIa32Microcode    = 1,\r
+  EfiProcessorIpfPalAMicrocode = 2,\r
+  EfiProcessorIpfPalBMicrocode = 3\r
+} EFI_PROCESSOR_MICROCODE_TYPE;\r
+\r
+typedef struct {\r
+  EFI_PROCESSOR_MICROCODE_TYPE  ProcessorMicrocodeType;\r
+  UINT32                        ProcessorMicrocodeRevisionNumber;\r
+} EFI_PROCESSOR_MICROCODE_REVISION_DATA;\r
+\r
+typedef struct {\r
+  UINT32      CpuStatus                 :3;\r
+  UINT32      Reserved1                 :3;\r
+  UINT32      SocketPopulated           :1;\r
+  UINT32      Reserved2                 :1;\r
+  UINT32      ApicEnable                :1;\r
+  UINT32      BootApplicationProcessor  :1;\r
+  UINT32      Reserved3                 :22;\r
+} EFI_PROCESSOR_STATUS_DATA;\r
+\r
+typedef enum {\r
+  EfiCpuStatusUnknown        = 0,\r
+  EfiCpuStatusEnabled        = 1,\r
+  EfiCpuStatusDisabledByUser = 2,\r
+  EfiCpuStatusDisabledbyBios = 3,\r
+  EfiCpuStatusIdle           = 4,\r
+  EfiCpuStatusOther          = 7\r
+} EFI_CPU_STATUS;\r
+\r
+typedef enum {\r
+  EfiProcessorSocketOther            = 1,\r
+  EfiProcessorSocketUnknown          = 2,\r
+  EfiProcessorSocketDaughterBoard    = 3,\r
+  EfiProcessorSocketZIF              = 4,\r
+  EfiProcessorSocketReplacePiggyBack = 5,\r
+  EfiProcessorSocketNone             = 6,\r
+  EfiProcessorSocketLIF              = 7,\r
+  EfiProcessorSocketSlot1            = 8,\r
+  EfiProcessorSocketSlot2            = 9,\r
+  EfiProcessorSocket370Pin           = 0xA,\r
+  EfiProcessorSocketSlotA            = 0xB,\r
+  EfiProcessorSocketSlotM            = 0xC,\r
+  EfiProcessorSocket423              = 0xD,\r
+  EfiProcessorSocketA462             = 0xE,\r
+  EfiProcessorSocket478              = 0xF,\r
+  EfiProcessorSocket754              = 0x10,\r
+  EfiProcessorSocket940              = 0x11,\r
+  EfiProcessorSocket939              = 0x12,\r
+  EfiProcessorSocketmPGA604          = 0x13,\r
+  EfiProcessorSocketLGA771           = 0x14,\r
+  EfiProcessorSocketLGA775           = 0x15\r
+\r
+} EFI_PROCESSOR_SOCKET_TYPE_DATA;\r
+\r
+typedef STRING_REF EFI_PROCESSOR_SOCKET_NAME_DATA;\r
+\r
+typedef EFI_INTER_LINK_DATA EFI_CACHE_ASSOCIATION_DATA;\r
+\r
+typedef enum {\r
+  EfiProcessorHealthy        = 1,\r
+  EfiProcessorPerfRestricted = 2,\r
+  EfiProcessorFuncRestricted = 3\r
+} EFI_PROCESSOR_HEALTH_STATUS;\r
+\r
+typedef UINTN   EFI_PROCESSOR_PACKAGE_NUMBER_DATA;\r
+\r
+\r
+typedef enum {\r
+  ProcessorCoreFrequencyRecordType     = 1,\r
+  ProcessorFsbFrequencyRecordType      = 2,\r
+  ProcessorVersionRecordType           = 3,\r
+  ProcessorManufacturerRecordType      = 4,\r
+  ProcessorSerialNumberRecordType      = 5,\r
+  ProcessorIdRecordType                = 6,\r
+  ProcessorTypeRecordType              = 7,\r
+  ProcessorFamilyRecordType            = 8,\r
+  ProcessorVoltageRecordType           = 9,\r
+  ProcessorApicBaseAddressRecordType   = 10,\r
+  ProcessorApicIdRecordType            = 11,\r
+  ProcessorApicVersionNumberRecordType = 12,\r
+  CpuUcodeRevisionDataRecordType       = 13,\r
+  ProcessorStatusRecordType            = 14,\r
+  ProcessorSocketTypeRecordType        = 15,\r
+  ProcessorSocketNameRecordType        = 16,\r
+  CacheAssociationRecordType           = 17,\r
+  ProcessorMaxCoreFrequencyRecordType  = 18,\r
+  ProcessorAssetTagRecordType          = 19,\r
+  ProcessorMaxFsbFrequencyRecordType   = 20,\r
+  ProcessorPackageNumberRecordType     = 21,\r
+  ProcessorCoreFrequencyListRecordType = 22,\r
+  ProcessorFsbFrequencyListRecordType  = 23,\r
+  ProcessorHealthStatusRecordType      = 24\r
+} EFI_CPU_VARIABLE_RECORD_TYPE;\r
+\r
+typedef union {\r
+  EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA  ProcessorCoreFrequencyList;\r
+  EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA   ProcessorFsbFrequencyList;\r
+  EFI_PROCESSOR_SERIAL_NUMBER_DATA        ProcessorSerialNumber;\r
+  EFI_PROCESSOR_CORE_FREQUENCY_DATA       ProcessorCoreFrequency;\r
+  EFI_PROCESSOR_FSB_FREQUENCY_DATA        ProcessorFsbFrequency;\r
+  EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA   ProcessorMaxCoreFrequency;\r
+  EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA    ProcessorMaxFsbFrequency;\r
+  EFI_PROCESSOR_VERSION_DATA              ProcessorVersion;\r
+  EFI_PROCESSOR_MANUFACTURER_DATA         ProcessorManufacturer;\r
+  EFI_PROCESSOR_ID_DATA                   ProcessorId;\r
+  EFI_PROCESSOR_TYPE_DATA                 ProcessorType;\r
+  EFI_PROCESSOR_FAMILY_DATA               ProcessorFamily;\r
+  EFI_PROCESSOR_VOLTAGE_DATA              ProcessorVoltage;\r
+  EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA    ProcessorApicBase;\r
+  EFI_PROCESSOR_APIC_ID_DATA              ProcessorApicId;\r
+  EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA  ProcessorApicVersionNumber;\r
+  EFI_PROCESSOR_MICROCODE_REVISION_DATA   CpuUcodeRevisionData;\r
+  EFI_PROCESSOR_STATUS_DATA               ProcessorStatus;\r
+  EFI_PROCESSOR_SOCKET_TYPE_DATA          ProcessorSocketType;\r
+  EFI_PROCESSOR_SOCKET_NAME_DATA          ProcessorSocketName;\r
+  EFI_PROCESSOR_ASSET_TAG_DATA            ProcessorAssetTag;\r
+  EFI_PROCESSOR_HEALTH_STATUS             ProcessorHealthStatus;\r
+  EFI_PROCESSOR_PACKAGE_NUMBER_DATA       ProcessorPackageNumber;\r
+} EFI_CPU_VARIABLE_RECORD;\r
+\r
+typedef struct {\r
+  EFI_SUBCLASS_TYPE1_HEADER      DataRecordHeader;\r
+  EFI_CPU_VARIABLE_RECORD        VariableRecord;\r
+} EFI_CPU_DATA_RECORD;\r
+\r
+#define EFI_CACHE_SUBCLASS_VERSION    0x00010000\r
+\r
+\r
+typedef EFI_EXP_BASE2_DATA  EFI_CACHE_SIZE_DATA;\r
+\r
+typedef EFI_EXP_BASE2_DATA  EFI_MAXIMUM_CACHE_SIZE_DATA;\r
+\r
+typedef EFI_EXP_BASE10_DATA EFI_CACHE_SPEED_DATA;\r
+\r
+typedef STRING_REF          EFI_CACHE_SOCKET_DATA;\r
+\r
+typedef struct {\r
+  UINT32  Other         :1;\r
+  UINT32  Unknown       :1;\r
+  UINT32  NonBurst      :1;\r
+  UINT32  Burst         :1;\r
+  UINT32  PipelineBurst :1;\r
+  UINT32  Asynchronous  :1;\r
+  UINT32  Synchronous   :1;\r
+  UINT32  Reserved      :25;\r
+} EFI_CACHE_SRAM_TYPE_DATA;\r
+\r
+typedef enum {\r
+  EfiCacheErrorOther     = 1,\r
+  EfiCacheErrorUnknown   = 2,\r
+  EfiCacheErrorNone      = 3,\r
+  EfiCacheErrorParity    = 4,\r
+  EfiCacheErrorSingleBit = 5,\r
+  EfiCacheErrorMultiBit  = 6\r
+} EFI_CACHE_ERROR_TYPE_DATA;\r
+\r
+typedef enum {\r
+  EfiCacheTypeOther       = 1,\r
+  EfiCacheTypeUnknown     = 2,\r
+  EfiCacheTypeInstruction = 3,\r
+  EfiCacheTypeData        = 4,\r
+  EfiCacheTypeUnified     = 5\r
+} EFI_CACHE_TYPE_DATA;\r
+\r
+typedef enum {\r
+  EfiCacheAssociativityOther        = 1,\r
+  EfiCacheAssociativityUnknown      = 2,\r
+  EfiCacheAssociativityDirectMapped = 3,\r
+  EfiCacheAssociativity2Way         = 4,\r
+  EfiCacheAssociativity4Way         = 5,\r
+  EfiCacheAssociativityFully        = 6,\r
+  EfiCacheAssociativity8Way         = 7,\r
+  EfiCacheAssociativity16Way        = 8\r
+} EFI_CACHE_ASSOCIATIVITY_DATA;\r
+\r
+typedef struct {\r
+  UINT32    Level           :3;\r
+  UINT32    Socketed        :1;\r
+  UINT32    Reserved2       :1;\r
+  UINT32    Location        :2;\r
+  UINT32    Enable          :1;\r
+  UINT32    OperationalMode :2;\r
+  UINT32    Reserved1       :22;\r
+} EFI_CACHE_CONFIGURATION_DATA;\r
+\r
+#define EFI_CACHE_L1      1\r
+#define EFI_CACHE_L2      2\r
+#define EFI_CACHE_L3      3\r
+#define EFI_CACHE_L4      4\r
+#define EFI_CACHE_LMAX    EFI_CACHE_L4\r
+\r
+#define EFI_CACHE_SOCKETED      1\r
+#define EFI_CACHE_NOT_SOCKETED  0\r
+\r
+typedef enum {\r
+  EfiCacheInternal = 0,\r
+  EfiCacheExternal = 1,\r
+  EfiCacheReserved = 2,\r
+  EfiCacheUnknown  = 3\r
+} EFI_CACHE_LOCATION;\r
+\r
+#define EFI_CACHE_ENABLED    1\r
+#define EFI_CACHE_DISABLED   0\r
+\r
+typedef enum {\r
+  EfiCacheWriteThrough = 0,\r
+  EfiCacheWriteBack    = 1,\r
+  EfiCacheDynamicMode  = 2,\r
+  EfiCacheUnknownMode  = 3\r
+} EFI_CACHE_OPERATIONAL_MODE;\r
+\r
+\r
+\r
+typedef enum {\r
+  CacheSizeRecordType              = 1,\r
+  MaximumSizeCacheRecordType       = 2,\r
+  CacheSpeedRecordType             = 3,\r
+  CacheSocketRecordType            = 4,\r
+  CacheSramTypeRecordType          = 5,\r
+  CacheInstalledSramTypeRecordType = 6,\r
+  CacheErrorTypeRecordType         = 7,\r
+  CacheTypeRecordType              = 8,\r
+  CacheAssociativityRecordType     = 9,\r
+  CacheConfigRecordType            = 10\r
+} EFI_CACHE_VARIABLE_RECORD_TYPE;\r
+\r
+\r
+typedef union {\r
+  EFI_CACHE_SIZE_DATA             CacheSize;\r
+  EFI_MAXIMUM_CACHE_SIZE_DATA     MaximumCacheSize;\r
+  EFI_CACHE_SPEED_DATA            CacheSpeed;\r
+  EFI_CACHE_SOCKET_DATA           CacheSocket;\r
+  EFI_CACHE_SRAM_TYPE_DATA        CacheSramType;\r
+  EFI_CACHE_SRAM_TYPE_DATA        CacheInstalledSramType;\r
+  EFI_CACHE_ERROR_TYPE_DATA       CacheErrorType;\r
+  EFI_CACHE_TYPE_DATA             CacheType;\r
+  EFI_CACHE_ASSOCIATIVITY_DATA    CacheAssociativity;\r
+  EFI_CACHE_CONFIGURATION_DATA    CacheConfig;\r
+  EFI_CACHE_ASSOCIATION_DATA      CacheAssociation;\r
+} EFI_CACHE_VARIABLE_RECORD;\r
+\r
+typedef struct {\r
+   EFI_SUBCLASS_TYPE1_HEADER      DataRecordHeader;\r
+   EFI_CACHE_VARIABLE_RECORD      VariableRecord;\r
+} EFI_CACHE_DATA_RECORD;\r
+\r
+#define EFI_MEMORY_SUBCLASS_VERSION     0x0100\r
+\r
+\r
+#define EFI_MEMORY_SIZE_RECORD_NUMBER                 0x00000001\r
+\r
+typedef enum _EFI_MEMORY_REGION_TYPE {\r
+  EfiMemoryRegionMemory                       = 0x01,\r
+  EfiMemoryRegionReserved                     = 0x02,\r
+  EfiMemoryRegionAcpi                         = 0x03,\r
+  EfiMemoryRegionNvs                          = 0x04\r
+} EFI_MEMORY_REGION_TYPE;\r
+\r
+typedef struct {\r
+  UINT32                      ProcessorNumber;\r
+  UINT16                      StartBusNumber;\r
+  UINT16                      EndBusNumber;\r
+  EFI_MEMORY_REGION_TYPE      MemoryRegionType;\r
+  EFI_EXP_BASE2_DATA          MemorySize;\r
+  EFI_PHYSICAL_ADDRESS        MemoryStartAddress;\r
+} EFI_MEMORY_SIZE_DATA;\r
+\r
+\r
+#define EFI_MEMORY_ARRAY_LOCATION_RECORD_NUMBER       0x00000002\r
+\r
+typedef enum _EFI_MEMORY_ARRAY_LOCATION {\r
+  EfiMemoryArrayLocationOther                 = 0x01,\r
+  EfiMemoryArrayLocationUnknown               = 0x02,\r
+  EfiMemoryArrayLocationSystemBoard           = 0x03,\r
+  EfiMemoryArrayLocationIsaAddonCard          = 0x04,\r
+  EfiMemoryArrayLocationEisaAddonCard         = 0x05,\r
+  EfiMemoryArrayLocationPciAddonCard          = 0x06,\r
+  EfiMemoryArrayLocationMcaAddonCard          = 0x07,\r
+  EfiMemoryArrayLocationPcmciaAddonCard       = 0x08,\r
+  EfiMemoryArrayLocationProprietaryAddonCard  = 0x09,\r
+  EfiMemoryArrayLocationNuBus                 = 0x0A,\r
+  EfiMemoryArrayLocationPc98C20AddonCard      = 0xA0,\r
+  EfiMemoryArrayLocationPc98C24AddonCard      = 0xA1,\r
+  EfiMemoryArrayLocationPc98EAddonCard        = 0xA2,\r
+  EfiMemoryArrayLocationPc98LocalBusAddonCard = 0xA3\r
+} EFI_MEMORY_ARRAY_LOCATION;\r
+\r
+typedef enum _EFI_MEMORY_ARRAY_USE {\r
+  EfiMemoryArrayUseOther                      = 0x01,\r
+  EfiMemoryArrayUseUnknown                    = 0x02,\r
+  EfiMemoryArrayUseSystemMemory               = 0x03,\r
+  EfiMemoryArrayUseVideoMemory                = 0x04,\r
+  EfiMemoryArrayUseFlashMemory                = 0x05,\r
+  EfiMemoryArrayUseNonVolatileRam             = 0x06,\r
+  EfiMemoryArrayUseCacheMemory                = 0x07,\r
+} EFI_MEMORY_ARRAY_USE;\r
+\r
+typedef enum _EFI_MEMORY_ERROR_CORRECTION {\r
+  EfiMemoryErrorCorrectionOther               = 0x01,\r
+  EfiMemoryErrorCorrectionUnknown             = 0x02,\r
+  EfiMemoryErrorCorrectionNone                = 0x03,\r
+  EfiMemoryErrorCorrectionParity              = 0x04,\r
+  EfiMemoryErrorCorrectionSingleBitEcc        = 0x05,\r
+  EfiMemoryErrorCorrectionMultiBitEcc         = 0x06,\r
+  EfiMemoryErrorCorrectionCrc                 = 0x07,\r
+} EFI_MEMORY_ERROR_CORRECTION;\r
+\r
+typedef struct {\r
+  EFI_MEMORY_ARRAY_LOCATION   MemoryArrayLocation;\r
+  EFI_MEMORY_ARRAY_USE        MemoryArrayUse;\r
+  EFI_MEMORY_ERROR_CORRECTION MemoryErrorCorrection;\r
+  EFI_EXP_BASE2_DATA          MaximumMemoryCapacity;\r
+  UINT16                      NumberMemoryDevices;\r
+} EFI_MEMORY_ARRAY_LOCATION_DATA;\r
+\r
+\r
+#define EFI_MEMORY_ARRAY_LINK_RECORD_NUMBER           0x00000003\r
+\r
+typedef enum _EFI_MEMORY_FORM_FACTOR {\r
+  EfiMemoryFormFactorOther                    = 0x01,\r
+  EfiMemoryFormFactorUnknown                  = 0x02,\r
+  EfiMemoryFormFactorSimm                     = 0x03,\r
+  EfiMemoryFormFactorSip                      = 0x04,\r
+  EfiMemoryFormFactorChip                     = 0x05,\r
+  EfiMemoryFormFactorDip                      = 0x06,\r
+  EfiMemoryFormFactorZip                      = 0x07,\r
+  EfiMemoryFormFactorProprietaryCard          = 0x08,\r
+  EfiMemoryFormFactorDimm                     = 0x09,\r
+  EfiMemoryFormFactorTsop                     = 0x0A,\r
+  EfiMemoryFormFactorRowOfChips               = 0x0B,\r
+  EfiMemoryFormFactorRimm                     = 0x0C,\r
+  EfiMemoryFormFactorSodimm                   = 0x0D,\r
+  EfiMemoryFormFactorSrimm                    = 0x0E,\r
+  EfiMemoryFormFactorFbDimm                   = 0x0F\r
+} EFI_MEMORY_FORM_FACTOR;\r
+\r
+typedef enum _EFI_MEMORY_ARRAY_TYPE {\r
+  EfiMemoryTypeOther                          = 0x01,\r
+  EfiMemoryTypeUnknown                        = 0x02,\r
+  EfiMemoryTypeDram                           = 0x03,\r
+  EfiMemoryTypeEdram                          = 0x04,\r
+  EfiMemoryTypeVram                           = 0x05,\r
+  EfiMemoryTypeSram                           = 0x06,\r
+  EfiMemoryTypeRam                            = 0x07,\r
+  EfiMemoryTypeRom                            = 0x08,\r
+  EfiMemoryTypeFlash                          = 0x09,\r
+  EfiMemoryTypeEeprom                         = 0x0A,\r
+  EfiMemoryTypeFeprom                         = 0x0B,\r
+  EfiMemoryTypeEprom                          = 0x0C,\r
+  EfiMemoryTypeCdram                          = 0x0D,\r
+  EfiMemoryType3Dram                          = 0x0E,\r
+  EfiMemoryTypeSdram                          = 0x0F,\r
+  EfiMemoryTypeSgram                          = 0x10,\r
+  EfiMemoryTypeRdram                          = 0x11,\r
+  EfiMemoryTypeDdr                            = 0x12,\r
+  EfiMemoryTypeDdr2                           = 0x13,\r
+  EfiMemoryTypeDdr2FbDimm                     = 0x14\r
+} EFI_MEMORY_ARRAY_TYPE;\r
+\r
+typedef struct {\r
+  UINT32                      Reserved        :1;\r
+  UINT32                      Other           :1;\r
+  UINT32                      Unknown         :1;\r
+  UINT32                      FastPaged       :1;\r
+  UINT32                      StaticColumn    :1;\r
+  UINT32                      PseudoStatic    :1;\r
+  UINT32                      Rambus          :1;\r
+  UINT32                      Synchronous     :1;\r
+  UINT32                      Cmos            :1;\r
+  UINT32                      Edo             :1;\r
+  UINT32                      WindowDram      :1;\r
+  UINT32                      CacheDram       :1;\r
+  UINT32                      Nonvolatile     :1;\r
+  UINT32                      Reserved1       :19;\r
+} EFI_MEMORY_TYPE_DETAIL;\r
+\r
+typedef enum {\r
+  EfiMemoryStateEnabled      = 0,\r
+  EfiMemoryStateUnknown      = 1,\r
+  EfiMemoryStateUnsupported  = 2,\r
+  EfiMemoryStateError        = 3,\r
+  EfiMemoryStateAbsent       = 4,\r
+  EfiMemoryStateDisabled     = 5,\r
+  EfiMemoryStatePartial      = 6\r
+} EFI_MEMORY_STATE;\r
+\r
+typedef struct {\r
+  STRING_REF                  MemoryDeviceLocator;\r
+  STRING_REF                  MemoryBankLocator;\r
+  STRING_REF                  MemoryManufacturer;\r
+  STRING_REF                  MemorySerialNumber;\r
+  STRING_REF                  MemoryAssetTag;\r
+  STRING_REF                  MemoryPartNumber;\r
+  EFI_INTER_LINK_DATA         MemoryArrayLink;\r
+  EFI_INTER_LINK_DATA         MemorySubArrayLink;\r
+  UINT16                      MemoryTotalWidth;\r
+  UINT16                      MemoryDataWidth;\r
+  EFI_EXP_BASE2_DATA          MemoryDeviceSize;\r
+  EFI_MEMORY_FORM_FACTOR      MemoryFormFactor;\r
+  UINT8                       MemoryDeviceSet;\r
+  EFI_MEMORY_ARRAY_TYPE       MemoryType;\r
+  EFI_MEMORY_TYPE_DETAIL      MemoryTypeDetail;\r
+  EFI_EXP_BASE10_DATA         MemorySpeed;\r
+  EFI_MEMORY_STATE            MemoryState;\r
+} EFI_MEMORY_ARRAY_LINK_DATA;\r
+\r
+\r
+#define EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER  0x00000004\r
+\r
+typedef struct {\r
+  EFI_PHYSICAL_ADDRESS        MemoryArrayStartAddress;\r
+  EFI_PHYSICAL_ADDRESS        MemoryArrayEndAddress;\r
+  EFI_INTER_LINK_DATA         PhysicalMemoryArrayLink;\r
+  UINT16                      MemoryArrayPartitionWidth;\r
+} EFI_MEMORY_ARRAY_START_ADDRESS_DATA;\r
+\r
+\r
+#define EFI_MEMORY_DEVICE_START_ADDRESS_RECORD_NUMBER 0x00000005\r
+\r
+typedef struct {\r
+  EFI_PHYSICAL_ADDRESS        MemoryDeviceStartAddress;\r
+  EFI_PHYSICAL_ADDRESS        MemoryDeviceEndAddress;\r
+  EFI_INTER_LINK_DATA         PhysicalMemoryDeviceLink;\r
+  EFI_INTER_LINK_DATA         PhysicalMemoryArrayLink;\r
+  UINT8                       MemoryDevicePartitionRowPosition;\r
+  UINT8                       MemoryDeviceInterleavePosition;\r
+  UINT8                       MemoryDeviceInterleaveDataDepth;\r
+} EFI_MEMORY_DEVICE_START_ADDRESS_DATA;\r
+\r
+\r
+//\r
+//  Memory. Channel Device Type -  SMBIOS Type 37\r
+//\r
+\r
+#define EFI_MEMORY_CHANNEL_TYPE_RECORD_NUMBER         0x00000006\r
+\r
+typedef enum _EFI_MEMORY_CHANNEL_TYPE {\r
+  EfiMemoryChannelTypeOther                   = 1,\r
+  EfiMemoryChannelTypeUnknown                 = 2,\r
+  EfiMemoryChannelTypeRambus                  = 3,\r
+  EfiMemoryChannelTypeSyncLink                = 4\r
+} EFI_MEMORY_CHANNEL_TYPE;\r
+\r
+typedef struct {\r
+  EFI_MEMORY_CHANNEL_TYPE     MemoryChannelType;\r
+  UINT8                       MemoryChannelMaximumLoad;\r
+  UINT8                       MemoryChannelDeviceCount;\r
+} EFI_MEMORY_CHANNEL_TYPE_DATA;\r
+\r
+#define EFI_MEMORY_CHANNEL_DEVICE_RECORD_NUMBER       0x00000007\r
+\r
+typedef struct {\r
+  UINT8                       DeviceId;\r
+  EFI_INTER_LINK_DATA         DeviceLink;\r
+  UINT8                       MemoryChannelDeviceLoad;\r
+} EFI_MEMORY_CHANNEL_DEVICE_DATA;\r
+\r
+\r
+\r
+typedef union _EFI_MEMORY_SUBCLASS_RECORDS {\r
+  EFI_MEMORY_SIZE_DATA                  SizeData;\r
+  EFI_MEMORY_ARRAY_LOCATION_DATA        ArrayLocationData;\r
+  EFI_MEMORY_ARRAY_LINK_DATA            ArrayLink;\r
+  EFI_MEMORY_ARRAY_START_ADDRESS_DATA   ArrayStartAddress;\r
+  EFI_MEMORY_DEVICE_START_ADDRESS_DATA  DeviceStartAddress;\r
+  EFI_MEMORY_CHANNEL_TYPE_DATA          ChannelTypeData;\r
+  EFI_MEMORY_CHANNEL_DEVICE_DATA        ChannelDeviceData;\r
+} EFI_MEMORY_SUBCLASS_RECORDS;\r
+\r
+typedef struct {\r
+  EFI_SUBCLASS_TYPE1_HEADER             Header;\r
+  EFI_MEMORY_SUBCLASS_RECORDS           Record;\r
+} EFI_MEMORY_SUBCLASS_DRIVER_DATA;\r
+\r
+#define EFI_MISC_SUBCLASS_VERSION     0x0100\r
+\r
+#pragma pack(1)\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Last PCI Bus Number\r
+//\r
+#define EFI_MISC_LAST_PCI_BUS_RECORD_NUMBER  0x00000001\r
+\r
+typedef struct {\r
+  UINT8   LastPciBus;\r
+} EFI_MISC_LAST_PCI_BUS_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Misc. BIOS Vendor - SMBIOS Type 0\r
+//\r
+#define EFI_MISC_BIOS_VENDOR_RECORD_NUMBER  0x00000002\r
+\r
+typedef struct {\r
+  UINT64  Reserved1                         :2;\r
+  UINT64  Unknown                           :1;\r
+  UINT64  BiosCharacteristicsNotSupported   :1;\r
+  UINT64  IsaIsSupported                    :1;\r
+  UINT64  McaIsSupported                    :1;\r
+  UINT64  EisaIsSupported                   :1;\r
+  UINT64  PciIsSupported                    :1;\r
+  UINT64  PcmciaIsSupported                 :1;\r
+  UINT64  PlugAndPlayIsSupported            :1;\r
+  UINT64  ApmIsSupported                    :1;\r
+  UINT64  BiosIsUpgradable                  :1;\r
+  UINT64  BiosShadowingAllowed              :1;\r
+  UINT64  VlVesaIsSupported                 :1;\r
+  UINT64  EscdSupportIsAvailable            :1;\r
+  UINT64  BootFromCdIsSupported             :1;\r
+  UINT64  SelectableBootIsSupported         :1;\r
+  UINT64  RomBiosIsSocketed                 :1;\r
+  UINT64  BootFromPcmciaIsSupported         :1;\r
+  UINT64  EDDSpecificationIsSupported       :1;\r
+  UINT64  JapaneseNecFloppyIsSupported      :1;\r
+  UINT64  JapaneseToshibaFloppyIsSupported  :1;\r
+  UINT64  Floppy525_360IsSupported          :1;\r
+  UINT64  Floppy525_12IsSupported           :1;\r
+  UINT64  Floppy35_720IsSupported           :1;\r
+  UINT64  Floppy35_288IsSupported           :1;\r
+  UINT64  PrintScreenIsSupported            :1;\r
+  UINT64  Keyboard8042IsSupported           :1;\r
+  UINT64  SerialIsSupported                 :1;\r
+  UINT64  PrinterIsSupported                :1;\r
+  UINT64  CgaMonoIsSupported                :1;\r
+  UINT64  NecPc98                           :1;\r
+  UINT64  AcpiIsSupported                   :1;\r
+  UINT64  UsbLegacyIsSupported              :1;\r
+  UINT64  AgpIsSupported                    :1;\r
+  UINT64  I20BootIsSupported                :1;\r
+  UINT64  Ls120BootIsSupported              :1;\r
+  UINT64  AtapiZipDriveBootIsSupported      :1;\r
+  UINT64  Boot1394IsSupported               :1;\r
+  UINT64  SmartBatteryIsSupported           :1;\r
+  UINT64  BiosBootSpecIsSupported           :1;\r
+  UINT64  FunctionKeyNetworkBootIsSupported :1;\r
+  UINT64  Reserved                          :22;\r
+} EFI_MISC_BIOS_CHARACTERISTICS;\r
+\r
+typedef struct {\r
+  UINT64  BiosReserved                      :16;\r
+  UINT64  SystemReserved                    :16;\r
+  UINT64  Reserved                          :32;\r
+} EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION;\r
+\r
+typedef struct {\r
+  STRING_REF                      BiosVendor;\r
+  STRING_REF                      BiosVersion;\r
+  STRING_REF                      BiosReleaseDate;\r
+  EFI_PHYSICAL_ADDRESS            BiosStartingAddress;\r
+  EFI_EXP_BASE2_DATA              BiosPhysicalDeviceSize;\r
+  EFI_MISC_BIOS_CHARACTERISTICS   BiosCharacteristics1;\r
+  EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION  BiosCharacteristics2;\r
+  UINT8                           BiosMajorRelease;\r
+  UINT8                           BiosMinorRelease;\r
+  UINT8                           BiosEmbeddedFirmwareMajorRelease;\r
+  UINT8                           BiosEmbeddedFirmwareMinorRelease;\r
+} EFI_MISC_BIOS_VENDOR_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Misc. System Manufacturer - SMBIOS Type 1\r
+//\r
+#define EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER 0x00000003\r
+\r
+typedef enum {\r
+  EfiSystemWakeupTypeReserved        = 0,\r
+  EfiSystemWakeupTypeOther           = 1,\r
+  EfiSystemWakeupTypeUnknown         = 2,\r
+  EfiSystemWakeupTypeApmTimer        = 3,\r
+  EfiSystemWakeupTypeModemRing       = 4,\r
+  EfiSystemWakeupTypeLanRemote       = 5,\r
+  EfiSystemWakeupTypePowerSwitch     = 6,\r
+  EfiSystemWakeupTypePciPme          = 7,\r
+  EfiSystemWakeupTypeAcPowerRestored = 8,\r
+} EFI_MISC_SYSTEM_WAKEUP_TYPE;\r
+\r
+typedef struct {\r
+  STRING_REF                      SystemManufacturer;\r
+  STRING_REF                      SystemProductName;\r
+  STRING_REF                      SystemVersion;\r
+  STRING_REF                      SystemSerialNumber;\r
+  EFI_GUID                        SystemUuid;\r
+  EFI_MISC_SYSTEM_WAKEUP_TYPE     SystemWakeupType;\r
+  STRING_REF                      SystemSKUNumber;\r
+  STRING_REF                      SystemFamily;\r
+} EFI_MISC_SYSTEM_MANUFACTURER_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Misc. Base Board Manufacturer - SMBIOS Type 2\r
+//\r
+#define EFI_MISC_BASE_BOARD_MANUFACTURER_RECORD_NUMBER 0x00000004\r
+\r
+typedef struct {\r
+  UINT32  Motherboard           :1;\r
+  UINT32  RequiresDaughterCard  :1;\r
+  UINT32  Removable             :1;\r
+  UINT32  Replaceable           :1;\r
+  UINT32  HotSwappable          :1;\r
+  UINT32  Reserved              :27;\r
+} EFI_BASE_BOARD_FEATURE_FLAGS;\r
+\r
+typedef enum {\r
+  EfiBaseBoardTypeUnknown                = 1,\r
+  EfiBaseBoardTypeOther                  = 2,\r
+  EfiBaseBoardTypeServerBlade            = 3,\r
+  EfiBaseBoardTypeConnectivitySwitch     = 4,\r
+  EfiBaseBoardTypeSystemManagementModule = 5,\r
+  EfiBaseBoardTypeProcessorModule        = 6,\r
+  EfiBaseBoardTypeIOModule               = 7,\r
+  EfiBaseBoardTypeMemoryModule           = 8,\r
+  EfiBaseBoardTypeDaughterBoard          = 9,\r
+  EfiBaseBoardTypeMotherBoard            = 0xA,\r
+  EfiBaseBoardTypeProcessorMemoryModule  = 0xB,\r
+  EfiBaseBoardTypeProcessorIOModule      = 0xC,\r
+  EfiBaseBoardTypeInterconnectBoard      = 0xD,\r
+} EFI_BASE_BOARD_TYPE;\r
+\r
+typedef struct {\r
+  STRING_REF                      BaseBoardManufacturer;\r
+  STRING_REF                      BaseBoardProductName;\r
+  STRING_REF                      BaseBoardVersion;\r
+  STRING_REF                      BaseBoardSerialNumber;\r
+  STRING_REF                      BaseBoardAssetTag;\r
+  STRING_REF                      BaseBoardChassisLocation;\r
+  EFI_BASE_BOARD_FEATURE_FLAGS    BaseBoardFeatureFlags;\r
+  EFI_BASE_BOARD_TYPE             BaseBoardType;\r
+  EFI_INTER_LINK_DATA             BaseBoardChassisLink;\r
+  UINT32                          BaseBoardNumberLinks;\r
+  EFI_INTER_LINK_DATA             LinkN;\r
+} EFI_MISC_BASE_BOARD_MANUFACTURER_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Misc. System/Chassis Enclosure - SMBIOS Type 3\r
+//\r
+#define EFI_MISC_CHASSIS_MANUFACTURER_RECORD_NUMBER  0x00000005\r
+\r
+typedef enum {\r
+  EfiMiscChassisTypeOther               = 0x1,\r
+  EfiMiscChassisTypeUnknown             = 0x2,\r
+  EfiMiscChassisTypeDeskTop             = 0x3,\r
+  EfiMiscChassisTypeLowProfileDesktop   = 0x4,\r
+  EfiMiscChassisTypePizzaBox            = 0x5,\r
+  EfiMiscChassisTypeMiniTower           = 0x6,\r
+  EfiMiscChassisTypeTower               = 0x7,\r
+  EfiMiscChassisTypePortable            = 0x8,\r
+  EfiMiscChassisTypeLapTop              = 0x9,\r
+  EfiMiscChassisTypeNotebook            = 0xA,\r
+  EfiMiscChassisTypeHandHeld            = 0xB,\r
+  EfiMiscChassisTypeDockingStation      = 0xC,\r
+  EfiMiscChassisTypeAllInOne            = 0xD,\r
+  EfiMiscChassisTypeSubNotebook         = 0xE,\r
+  EfiMiscChassisTypeSpaceSaving         = 0xF,\r
+  EfiMiscChassisTypeLunchBox            = 0x10,\r
+  EfiMiscChassisTypeMainServerChassis   = 0x11,\r
+  EfiMiscChassisTypeExpansionChassis    = 0x12,\r
+  EfiMiscChassisTypeSubChassis          = 0x13,\r
+  EfiMiscChassisTypeBusExpansionChassis = 0x14,\r
+  EfiMiscChassisTypePeripheralChassis   = 0x15,\r
+  EfiMiscChassisTypeRaidChassis         = 0x16,\r
+  EfiMiscChassisTypeRackMountChassis    = 0x17,\r
+  EfiMiscChassisTypeSealedCasePc        = 0x18,\r
+  EfiMiscChassisMultiSystemChassis      = 0x19,\r
+} EFI_MISC_CHASSIS_TYPE;\r
+\r
+typedef struct {\r
+  UINT32  ChassisType       :16;\r
+  UINT32  ChassisLockPresent:1;\r
+  UINT32  Reserved          :15;\r
+} EFI_MISC_CHASSIS_STATUS;\r
+\r
+typedef enum {\r
+  EfiChassisStateOther           = 0x01,\r
+  EfiChassisStateUnknown         = 0x02,\r
+  EfiChassisStateSafe            = 0x03,\r
+  EfiChassisStateWarning         = 0x04,\r
+  EfiChassisStateCritical        = 0x05,\r
+  EfiChassisStateNonRecoverable  = 0x06,\r
+} EFI_MISC_CHASSIS_STATE;\r
+\r
+typedef enum {\r
+  EfiChassisSecurityStatusOther                          = 0x01,\r
+  EfiChassisSecurityStatusUnknown                        = 0x02,\r
+  EfiChassisSecurityStatusNone                           = 0x03,\r
+  EfiChassisSecurityStatusExternalInterfaceLockedOut     = 0x04,\r
+  EfiChassisSecurityStatusExternalInterfaceLockedEnabled = 0x05,\r
+} EFI_MISC_CHASSIS_SECURITY_STATE;\r
+\r
+typedef struct {\r
+  UINT32  RecordType  :1;\r
+  UINT32  Reserved    :24;\r
+} EFI_MISC_ELEMENT_TYPE;\r
+\r
+typedef struct {\r
+  EFI_MISC_ELEMENT_TYPE   ChassisElementType;\r
+  EFI_INTER_LINK_DATA     ChassisElementStructure;\r
+  EFI_BASE_BOARD_TYPE     ChassisBaseBoard;\r
+  UINT32                  ChassisElementMinimum;\r
+  UINT32                  ChassisElementMaximum;\r
+} EFI_MISC_ELEMENTS;\r
+\r
+typedef struct {\r
+  STRING_REF                      ChassisManufacturer;\r
+  STRING_REF                      ChassisVersion;\r
+  STRING_REF                      ChassisSerialNumber;\r
+  STRING_REF                      ChassisAssetTag;\r
+  EFI_MISC_CHASSIS_STATUS         ChassisType;\r
+  EFI_MISC_CHASSIS_STATE          ChassisBootupState;\r
+  EFI_MISC_CHASSIS_STATE          ChassisPowerSupplyState;\r
+  EFI_MISC_CHASSIS_STATE          ChassisThermalState;\r
+  EFI_MISC_CHASSIS_SECURITY_STATE ChassisSecurityState;\r
+  UINT32                          ChassisOemDefined;\r
+  UINT32                          ChassisHeight;\r
+  UINT32                          ChassisNumberPowerCords;\r
+  UINT32                          ChassisElementCount;\r
+  UINT32                          ChassisElementRecordLength;//\r
+  EFI_MISC_ELEMENTS               ChassisElements;\r
+} EFI_MISC_CHASSIS_MANUFACTURER_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Misc. Port Connector Information - SMBIOS Type 8\r
+//\r
+#define EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_RECORD_NUMBER 0x00000006\r
+\r
+typedef enum {\r
+  EfiPortConnectorTypeNone                   = 0x00,\r
+  EfiPortConnectorTypeCentronics             = 0x01,\r
+  EfiPortConnectorTypeMiniCentronics         = 0x02,\r
+  EfiPortConnectorTypeProprietary            = 0x03,\r
+  EfiPortConnectorTypeDB25Male               = 0x04,\r
+  EfiPortConnectorTypeDB25Female             = 0x05,\r
+  EfiPortConnectorTypeDB15Male               = 0x06,\r
+  EfiPortConnectorTypeDB15Female             = 0x07,\r
+  EfiPortConnectorTypeDB9Male                = 0x08,\r
+  EfiPortConnectorTypeDB9Female              = 0x09,\r
+  EfiPortConnectorTypeRJ11                   = 0x0A,\r
+  EfiPortConnectorTypeRJ45                   = 0x0B,\r
+  EfiPortConnectorType50PinMiniScsi          = 0x0C,\r
+  EfiPortConnectorTypeMiniDin                = 0x0D,\r
+  EfiPortConnectorTypeMicriDin               = 0x0E,\r
+  EfiPortConnectorTypePS2                    = 0x0F,\r
+  EfiPortConnectorTypeInfrared               = 0x10,\r
+  EfiPortConnectorTypeHpHil                  = 0x11,\r
+  EfiPortConnectorTypeUsb                    = 0x12,\r
+  EfiPortConnectorTypeSsaScsi                = 0x13,\r
+  EfiPortConnectorTypeCircularDin8Male       = 0x14,\r
+  EfiPortConnectorTypeCircularDin8Female     = 0x15,\r
+  EfiPortConnectorTypeOnboardIde             = 0x16,\r
+  EfiPortConnectorTypeOnboardFloppy          = 0x17,\r
+  EfiPortConnectorType9PinDualInline         = 0x18,\r
+  EfiPortConnectorType25PinDualInline        = 0x19,\r
+  EfiPortConnectorType50PinDualInline        = 0x1A,\r
+  EfiPortConnectorType68PinDualInline        = 0x1B,\r
+  EfiPortConnectorTypeOnboardSoundInput      = 0x1C,\r
+  EfiPortConnectorTypeMiniCentronicsType14   = 0x1D,\r
+  EfiPortConnectorTypeMiniCentronicsType26   = 0x1E,\r
+  EfiPortConnectorTypeHeadPhoneMiniJack      = 0x1F,\r
+  EfiPortConnectorTypeBNC                    = 0x20,\r
+  EfiPortConnectorType1394                   = 0x21,\r
+  EfiPortConnectorTypePC98                   = 0xA0,\r
+  EfiPortConnectorTypePC98Hireso             = 0xA1,\r
+  EfiPortConnectorTypePCH98                  = 0xA2,\r
+  EfiPortConnectorTypePC98Note               = 0xA3,\r
+  EfiPortConnectorTypePC98Full               = 0xA4,\r
+  EfiPortConnectorTypeOther                  = 0xFF,\r
+} EFI_MISC_PORT_CONNECTOR_TYPE;\r
+\r
+typedef enum {\r
+  EfiPortTypeNone                      = 0x00,\r
+  EfiPortTypeParallelXtAtCompatible    = 0x01,\r
+  EfiPortTypeParallelPortPs2           = 0x02,\r
+  EfiPortTypeParallelPortEcp           = 0x03,\r
+  EfiPortTypeParallelPortEpp           = 0x04,\r
+  EfiPortTypeParallelPortEcpEpp        = 0x05,\r
+  EfiPortTypeSerialXtAtCompatible      = 0x06,\r
+  EfiPortTypeSerial16450Compatible     = 0x07,\r
+  EfiPortTypeSerial16550Compatible     = 0x08,\r
+  EfiPortTypeSerial16550ACompatible    = 0x09,\r
+  EfiPortTypeScsi                      = 0x0A,\r
+  EfiPortTypeMidi                      = 0x0B,\r
+  EfiPortTypeJoyStick                  = 0x0C,\r
+  EfiPortTypeKeyboard                  = 0x0D,\r
+  EfiPortTypeMouse                     = 0x0E,\r
+  EfiPortTypeSsaScsi                   = 0x0F,\r
+  EfiPortTypeUsb                       = 0x10,\r
+  EfiPortTypeFireWire                  = 0x11,\r
+  EfiPortTypePcmciaTypeI               = 0x12,\r
+  EfiPortTypePcmciaTypeII              = 0x13,\r
+  EfiPortTypePcmciaTypeIII             = 0x14,\r
+  EfiPortTypeCardBus                   = 0x15,\r
+  EfiPortTypeAccessBusPort             = 0x16,\r
+  EfiPortTypeScsiII                    = 0x17,\r
+  EfiPortTypeScsiWide                  = 0x18,\r
+  EfiPortTypePC98                      = 0x19,\r
+  EfiPortTypePC98Hireso                = 0x1A,\r
+  EfiPortTypePCH98                     = 0x1B,\r
+  EfiPortTypeVideoPort                 = 0x1C,\r
+  EfiPortTypeAudioPort                 = 0x1D,\r
+  EfiPortTypeModemPort                 = 0x1E,\r
+  EfiPortTypeNetworkPort               = 0x1F,\r
+  EfiPortType8251Compatible            = 0xA0,\r
+  EfiPortType8251FifoCompatible        = 0xA1,\r
+  EfiPortTypeOther                     = 0xFF,\r
+} EFI_MISC_PORT_TYPE;\r
+\r
+typedef struct {\r
+  STRING_REF                    PortInternalConnectorDesignator;\r
+  STRING_REF                    PortExternalConnectorDesignator;\r
+  EFI_MISC_PORT_CONNECTOR_TYPE  PortInternalConnectorType;\r
+  EFI_MISC_PORT_CONNECTOR_TYPE  PortExternalConnectorType;\r
+  EFI_MISC_PORT_TYPE            PortType;\r
+  EFI_MISC_PORT_DEVICE_PATH     PortPath;\r
+} EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Misc. System Slots - SMBIOS Type 9\r
+//\r
+#define EFI_MISC_SYSTEM_SLOT_DESIGNATION_RECORD_NUMBER 0x00000007\r
+\r
+typedef enum {\r
+  EfiSlotTypeOther                        = 0x01,\r
+  EfiSlotTypeUnknown                      = 0x02,\r
+  EfiSlotTypeIsa                          = 0x03,\r
+  EfiSlotTypeMca                          = 0x04,\r
+  EfiSlotTypeEisa                         = 0x05,\r
+  EfiSlotTypePci                          = 0x06,\r
+  EfiSlotTypePcmcia                       = 0x07,\r
+  EfiSlotTypeVlVesa                       = 0x08,\r
+  EfiSlotTypeProprietary                  = 0x09,\r
+  EfiSlotTypeProcessorCardSlot            = 0x0A,\r
+  EfiSlotTypeProprietaryMemoryCardSlot    = 0x0B,\r
+  EfiSlotTypeIORiserCardSlot              = 0x0C,\r
+  EfiSlotTypeNuBus                        = 0x0D,\r
+  EfiSlotTypePci66MhzCapable              = 0x0E,\r
+  EfiSlotTypeAgp                          = 0x0F,\r
+  EfiSlotTypeApg2X                        = 0x10,\r
+  EfiSlotTypeAgp4X                        = 0x11,\r
+  EfiSlotTypePciX                         = 0x12,\r
+  EfiSlotTypeAgp4x                        = 0x13,\r
+  EfiSlotTypePC98C20                      = 0xA0,\r
+  EfiSlotTypePC98C24                      = 0xA1,\r
+  EfiSlotTypePC98E                        = 0xA2,\r
+  EfiSlotTypePC98LocalBus                 = 0xA3,\r
+  EfiSlotTypePC98Card                     = 0xA4,\r
+  EfiSlotTypePciExpress                   = 0xA5\r
+} EFI_MISC_SLOT_TYPE;\r
+\r
+typedef enum {\r
+  EfiSlotDataBusWidthOther      = 0x01,\r
+  EfiSlotDataBusWidthUnknown    = 0x02,\r
+  EfiSlotDataBusWidth8Bit       = 0x03,\r
+  EfiSlotDataBusWidth16Bit      = 0x04,\r
+  EfiSlotDataBusWidth32Bit      = 0x05,\r
+  EfiSlotDataBusWidth64Bit      = 0x06,\r
+  EfiSlotDataBusWidth128Bit     = 0x07,\r
+} EFI_MISC_SLOT_DATA_BUS_WIDTH;\r
+\r
+typedef enum {\r
+  EfiSlotUsageOther     = 1,\r
+  EfiSlotUsageUnknown   = 2,\r
+  EfiSlotUsageAvailable = 3,\r
+  EfiSlotUsageInUse     = 4,\r
+} EFI_MISC_SLOT_USAGE;\r
+\r
+typedef enum {\r
+  EfiSlotLengthOther   = 1,\r
+  EfiSlotLengthUnknown = 2,\r
+  EfiSlotLengthShort   = 3,\r
+  EfiSlotLengthLong    = 4\r
+} EFI_MISC_SLOT_LENGTH;\r
+\r
+typedef struct {\r
+  UINT32  CharacteristicsUnknown  :1;\r
+  UINT32  Provides50Volts         :1;\r
+  UINT32  Provides33Volts         :1;\r
+  UINT32  SharedSlot              :1;\r
+  UINT32  PcCard16Supported       :1;\r
+  UINT32  CardBusSupported        :1;\r
+  UINT32  ZoomVideoSupported      :1;\r
+  UINT32  ModemRingResumeSupported:1;\r
+  UINT32  PmeSignalSupported      :1;\r
+  UINT32  HotPlugDevicesSupported :1;\r
+  UINT32  SmbusSignalSupported    :1;\r
+  UINT32  Reserved                :21;\r
+} EFI_MISC_SLOT_CHARACTERISTICS;\r
+\r
+typedef struct {\r
+  STRING_REF                    SlotDesignation;\r
+  EFI_MISC_SLOT_TYPE            SlotType;\r
+  EFI_MISC_SLOT_DATA_BUS_WIDTH  SlotDataBusWidth;\r
+  EFI_MISC_SLOT_USAGE           SlotUsage;\r
+  EFI_MISC_SLOT_LENGTH          SlotLength;\r
+  UINT16                        SlotId;\r
+  EFI_MISC_SLOT_CHARACTERISTICS SlotCharacteristics;\r
+  EFI_DEVICE_PATH_PROTOCOL      SlotDevicePath;\r
+} EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Misc. Onboard Device - SMBIOS Type 10\r
+//\r
+#define EFI_MISC_ONBOARD_DEVICE_RECORD_NUMBER 0x00000008\r
+\r
+typedef enum {\r
+  EfiOnBoardDeviceTypeOther          = 1,\r
+  EfiOnBoardDeviceTypeUnknown        = 2,\r
+  EfiOnBoardDeviceTypeVideo          = 3,\r
+  EfiOnBoardDeviceTypeScsiController = 4,\r
+  EfiOnBoardDeviceTypeEthernet       = 5,\r
+  EfiOnBoardDeviceTypeTokenRing      = 6,\r
+  EfiOnBoardDeviceTypeSound          = 7,\r
+} EFI_MISC_ONBOARD_DEVICE_TYPE;\r
+\r
+typedef struct {\r
+  UINT32  DeviceType    :16;\r
+  UINT32  DeviceEnabled :1;\r
+  UINT32  Reserved      :15;\r
+} EFI_MISC_ONBOARD_DEVICE_STATUS;\r
+\r
+typedef struct {\r
+  STRING_REF                           OnBoardDeviceDescription;\r
+  EFI_MISC_ONBOARD_DEVICE_STATUS       OnBoardDeviceStatus;\r
+  EFI_DEVICE_PATH_PROTOCOL             OnBoardDevicePath;\r
+} EFI_MISC_ONBOARD_DEVICE_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Misc. BIOS Language Information - SMBIOS Type 11\r
+//\r
+#define EFI_MISC_OEM_STRING_RECORD_NUMBER 0x00000009\r
+\r
+typedef struct {\r
+  STRING_REF                          OemStringRef[1];\r
+} EFI_MISC_OEM_STRING_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Misc. System Options - SMBIOS Type 12\r
+//\r
+typedef struct {\r
+  STRING_REF                          SystemOptionStringRef[1];\r
+} EFI_MISC_SYSTEM_OPTION_STRING_DATA;\r
+\r
+#define EFI_MISC_SYSTEM_OPTION_STRING_RECORD_NUMBER 0x0000000A\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Misc. Number of Installable Languages - SMBIOS Type 13\r
+//\r
+#define EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_RECORD_NUMBER 0x0000000B\r
+\r
+typedef struct {\r
+  UINT32                              AbbreviatedLanguageFormat :1;\r
+  UINT32                              Reserved                  :31;\r
+} EFI_MISC_LANGUAGE_FLAGS;\r
+\r
+typedef struct {\r
+  UINT16                              NumberOfInstallableLanguages;\r
+  EFI_MISC_LANGUAGE_FLAGS             LanguageFlags;\r
+  UINT16                              CurrentLanguageNumber;\r
+} EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Misc. System Language String\r
+//\r
+#define EFI_MISC_SYSTEM_LANGUAGE_STRING_RECORD_NUMBER 0x0000000C\r
+\r
+typedef struct {\r
+  UINT16                              LanguageId;\r
+  STRING_REF                          SystemLanguageString;\r
+} EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Group Associations - SMBIOS Type 14\r
+//\r
+#define EFI_MISC_GROUP_NAME_RECORD_NUMBER          0x0000000D\r
+\r
+typedef struct {\r
+  STRING_REF               GroupName;\r
+  UINT16                   NumberGroupItems;\r
+  UINT16                   GroupId;\r
+} EFI_MISC_GROUP_NAME_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Group Item Set Element\r
+//\r
+#define EFI_MISC_GROUP_ITEM_SET_RECORD_NUMBER      0x0000000E\r
+\r
+typedef struct {\r
+  EFI_GUID                 SubClass;\r
+  EFI_INTER_LINK_DATA      GroupLink;\r
+  UINT16                   GroupId;\r
+  UINT16                   GroupElementId;\r
+} EFI_MISC_GROUP_ITEM_SET_DATA;\r
+\r
+//  Misc. System Event Log  - SMBIOS Type 15\r
+//\r
+#define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x0000000D\r
+typedef struct {\r
+  UINT16                LogAreaLength;\r
+  UINT16                LogHeaderStartOffset;\r
+  UINT16                LogDataStartOffset;\r
+  UINT8                 AccessMethod;\r
+  UINT8                 LogStatus;\r
+  UINT32                LogChangeToken;\r
+  UINT32                AccessMethodAddress;\r
+  UINT8                 LogHeaderFormat;\r
+  UINT8                 NumberOfSupportedLogType;\r
+  UINT8                 LengthOfLogDescriptor;\r
+} EFI_MISC_SYSTEM_EVENT_LOG_DATA;\r
+\r
+//\r
+// Access Method.\r
+//  0x00~0x04:  as following definition\r
+//  0x05~0x7f:  Available for future assignment.\r
+//  0x80~0xff:  BIOS Vendor/OEM-specific.\r
+//\r
+#define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT    0x00\r
+#define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT    0X01\r
+#define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT   0X02\r
+#define ACCESS_MEMORY_MAPPED                  0x03\r
+#define ACCESS_GPNV                           0x04\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+//  Misc. Pointing Device Type - SMBIOS Type 21\r
+//\r
+#define EFI_MISC_POINTING_DEVICE_TYPE_RECORD_NUMBER 0x0000000F\r
+\r
+typedef enum {\r
+  EfiPointingDeviceTypeOther         = 0x01,\r
+  EfiPointingDeviceTypeUnknown       = 0x02,\r
+  EfiPointingDeviceTypeMouse         = 0x03,\r
+  EfiPointingDeviceTypeTrackBall     = 0x04,\r
+  EfiPointingDeviceTypeTrackPoint    = 0x05,\r
+  EfiPointingDeviceTypeGlidePoint    = 0x06,\r
+  EfiPointingDeviceTouchPad          = 0x07,\r
+  EfiPointingDeviceTouchScreen       = 0x08,\r
+  EfiPointingDeviceOpticalSensor     = 0x09,\r
+} EFI_MISC_POINTING_DEVICE_TYPE;\r
+\r
+typedef enum {\r
+  EfiPointingDeviceInterfaceOther              = 0x01,\r
+  EfiPointingDeviceInterfaceUnknown            = 0x02,\r
+  EfiPointingDeviceInterfaceSerial             = 0x03,\r
+  EfiPointingDeviceInterfacePs2                = 0x04,\r
+  EfiPointingDeviceInterfaceInfrared           = 0x05,\r
+  EfiPointingDeviceInterfaceHpHil              = 0x06,\r
+  EfiPointingDeviceInterfaceBusMouse           = 0x07,\r
+  EfiPointingDeviceInterfaceADB                = 0x08,\r
+  EfiPointingDeviceInterfaceBusMouseDB9        = 0xA0,\r
+  EfiPointingDeviceInterfaceBusMouseMicroDin   = 0xA1,\r
+  EfiPointingDeviceInterfaceUsb                = 0xA2,\r
+} EFI_MISC_POINTING_DEVICE_INTERFACE;\r
+\r
+typedef struct {\r
+  EFI_MISC_POINTING_DEVICE_TYPE       PointingDeviceType;\r
+  EFI_MISC_POINTING_DEVICE_INTERFACE  PointingDeviceInterface;\r
+  UINT16                              NumberPointingDeviceButtons;\r
+  EFI_DEVICE_PATH_PROTOCOL            PointingDevicePath;\r
+} EFI_MISC_PORTING_DEVICE_TYPE_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Portable Battery - SMBIOS Type 22\r
+//\r
+#define EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER  0x00000010\r
+\r
+typedef enum {\r
+  EfiBatteryDeviceChemistryTypeOther               = 0x01,\r
+  EfiBatteryDeviceChemistryTypeUnknown             = 0x02,\r
+  EfiBatteryDeviceChemistryTypeLeadAcid            = 0x03,\r
+  EfiBatteryDeviceChemistryTypeNickelCadmium       = 0x04,\r
+  EfiBatteryDeviceChemistryTypeNickelMetalHydride  = 0x05,\r
+  EfiBatteryDeviceChemistryTypeLithiumIon          = 0x06,\r
+  EfiBatteryDeviceChemistryTypeZincAir             = 0x07,\r
+  EfiBatteryDeviceChemistryTypeLithiumPolymer      = 0x08,\r
+} EFI_MISC_BATTERY_DEVICE_CHEMISTRY;\r
+\r
+typedef struct  {\r
+  UINT32 Date              :5;\r
+  UINT32 Month             :4;\r
+  UINT32 Year              :7;\r
+  UINT32 Reserved          :16;\r
+} EFI_MISC_BATTERY_SBDS_MANUFACTURE_DATE;\r
+\r
+typedef struct {\r
+  STRING_REF                         BatteryLocation;\r
+  STRING_REF                         BatteryManufacturer;\r
+  STRING_REF                         BatteryManufactureDate;\r
+  STRING_REF                         BatterySerialNumber;\r
+  STRING_REF                         BatteryDeviceName;\r
+  STRING_REF                         BatterySbdsVersionNumber;\r
+  STRING_REF                         BatterySbdsDeviceChemistry;\r
+  EFI_MISC_BATTERY_DEVICE_CHEMISTRY  BatteryDeviceChemistry;\r
+  EFI_EXP_BASE10_DATA                BatteryDesignCapacity;\r
+  EFI_EXP_BASE10_DATA                BatteryDesignVoltage;\r
+  UINT16                             BatteryMaximumError;\r
+  UINT16                             BatterySbdsSerialNumber;\r
+  EFI_MISC_BATTERY_SBDS_MANUFACTURE_DATE\r
+                                     BatterySbdsManufacturingDate;\r
+  UINT32                             BatteryOemSpecific;\r
+} EFI_MISC_BATTERY_LOCATION_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Misc. Reset Capabilities - SMBIOS Type 23\r
+//\r
+#define EFI_MISC_RESET_CAPABILITIES_RECORD_NUMBER 0x00000011\r
+\r
+typedef struct {\r
+  UINT32  Status              :1;\r
+  UINT32  BootOption          :2;\r
+  UINT32  BootOptionOnLimit   :2;\r
+  UINT32  WatchdogTimerPresent:1;\r
+  UINT32  Reserved            :26;\r
+} EFI_MISC_RESET_CAPABILITIES_TYPE;\r
+\r
+typedef struct {\r
+  EFI_MISC_RESET_CAPABILITIES_TYPE  ResetCapabilities;\r
+  UINT16                            ResetCount;\r
+  UINT16                            ResetLimit;\r
+  UINT16                            ResetTimerInterval;\r
+  UINT16                            ResetTimeout;\r
+} EFI_MISC_RESET_CAPABILITIES;\r
+\r
+typedef struct {\r
+    EFI_MISC_RESET_CAPABILITIES   ResetCapabilities;\r
+    UINT16                        ResetCount;\r
+    UINT16                        ResetLimit;\r
+    UINT16                        ResetTimerInterval;\r
+    UINT16                        ResetTimeout;\r
+} EFI_MISC_RESET_CAPABILITIES_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Misc. Hardware Security - SMBIOS Type 24\r
+//\r
+#define EFI_MISC_HARDWARE_SECURITY_RECORD_NUMBER 0x00000012\r
+\r
+typedef enum {\r
+  EfiHardwareSecurityStatusDisabled       = 0,\r
+  EfiHardwareSecurityStatusEnabled        = 1,\r
+  EfiHardwareSecurityStatusNotImplemented = 2,\r
+  EfiHardwareSecurityStatusUnknown        = 3\r
+} EFI_MISC_HARDWARE_SECURITY_STATUS;\r
+\r
+typedef struct {\r
+  EFI_MISC_HARDWARE_SECURITY_STATUS   FrontPanelResetStatus       :2;\r
+  EFI_MISC_HARDWARE_SECURITY_STATUS   AdministratorPasswordStatus :2;\r
+  EFI_MISC_HARDWARE_SECURITY_STATUS   KeyboardPasswordStatus      :2;\r
+  EFI_MISC_HARDWARE_SECURITY_STATUS   PowerOnPasswordStatus       :2;\r
+  EFI_MISC_HARDWARE_SECURITY_STATUS   Reserved                    :24;\r
+} EFI_MISC_HARDWARE_SECURITY_SETTINGS;\r
+\r
+typedef struct {\r
+  EFI_MISC_HARDWARE_SECURITY_SETTINGS HardwareSecuritySettings;\r
+} EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// System Power Controls - SMBIOS Type 25\r
+//\r
+#define EFI_MISC_SCHEDULED_POWER_ON_MONTH_RECORD_NUMBER  0x00000013\r
+\r
+typedef struct {\r
+  UINT16             ScheduledPoweronMonth;\r
+  UINT16             ScheduledPoweronDayOfMonth;\r
+  UINT16             ScheduledPoweronHour;\r
+  UINT16             ScheduledPoweronMinute;\r
+  UINT16             ScheduledPoweronSecond;\r
+} EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Voltage Probe - SMBIOS Type 26\r
+//\r
+#define EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_RECORD_NUMBER  0x00000014\r
+\r
+typedef struct {\r
+  UINT32 VoltageProbeSite        :5;\r
+  UINT32 VoltageProbeStatus      :3;\r
+  UINT32 Reserved                :24;\r
+} EFI_MISC_VOLTAGE_PROBE_LOCATION;\r
+\r
+typedef struct {\r
+  STRING_REF                      VoltageProbeDescription;\r
+  EFI_MISC_VOLTAGE_PROBE_LOCATION VoltageProbeLocation;\r
+  EFI_EXP_BASE10_DATA             VoltageProbeMaximumValue;\r
+  EFI_EXP_BASE10_DATA             VoltageProbeMinimumValue;\r
+  EFI_EXP_BASE10_DATA             VoltageProbeResolution;\r
+  EFI_EXP_BASE10_DATA             VoltageProbeTolerance;\r
+  EFI_EXP_BASE10_DATA             VoltageProbeAccuracy;\r
+  EFI_EXP_BASE10_DATA             VoltageProbeNominalValue;\r
+  EFI_EXP_BASE10_DATA             MDLowerNoncriticalThreshold;\r
+  EFI_EXP_BASE10_DATA             MDUpperNoncriticalThreshold;\r
+  EFI_EXP_BASE10_DATA             MDLowerCriticalThreshold;\r
+  EFI_EXP_BASE10_DATA             MDUpperCriticalThreshold;\r
+  EFI_EXP_BASE10_DATA             MDLowerNonrecoverableThreshold;\r
+  EFI_EXP_BASE10_DATA             MDUpperNonrecoverableThreshold;\r
+  UINT32                          VoltageProbeOemDefined;\r
+} EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Cooling Device - SMBIOS Type 27\r
+//\r
+#define EFI_MISC_COOLING_DEVICE_TEMP_LINK_RECORD_NUMBER   0x00000015\r
+\r
+typedef struct {\r
+  UINT32 CoolingDevice                 :5;\r
+  UINT32 CoolingDeviceStatus           :3;\r
+  UINT32 Reserved                      :24;\r
+} EFI_MISC_COOLING_DEVICE_TYPE;\r
+\r
+typedef struct {\r
+  EFI_MISC_COOLING_DEVICE_TYPE   CoolingDeviceType;\r
+  EFI_INTER_LINK_DATA            CoolingDeviceTemperatureLink;\r
+  UINT16                         CoolingDeviceUnitGroup;\r
+  EFI_EXP_BASE10_DATA            CoolingDeviceNominalSpeed;\r
+  UINT32                         CoolingDeviceOemDefined;\r
+} EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Temperature Probe - SMBIOS Type 28\r
+//\r
+#define EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_RECORD_NUMBER   0x00000016\r
+\r
+typedef struct {\r
+  UINT32 TemperatureProbeSite          :5;\r
+  UINT32 TemperatureProbeStatus        :3;\r
+  UINT32 Reserved                      :24;\r
+} EFI_MISC_TEMPERATURE_PROBE_LOCATION;\r
+\r
+typedef struct {\r
+  STRING_REF               TemperatureProbeDescription;\r
+  EFI_MISC_TEMPERATURE_PROBE_LOCATION\r
+                           TemperatureProbeLocation;\r
+  EFI_EXP_BASE10_DATA      TemperatureProbeMaximumValue;\r
+  EFI_EXP_BASE10_DATA      TemperatureProbeMinimumValue;\r
+  EFI_EXP_BASE10_DATA      TemperatureProbeResolution;\r
+  EFI_EXP_BASE10_DATA      TemperatureProbeTolerance;\r
+  EFI_EXP_BASE10_DATA      TemperatureProbeAccuracy;\r
+  EFI_EXP_BASE10_DATA      TemperatureProbeNominalValue;\r
+  EFI_EXP_BASE10_DATA      MDLowerNoncriticalThreshold;\r
+  EFI_EXP_BASE10_DATA      MDUpperNoncriticalThreshold;\r
+  EFI_EXP_BASE10_DATA      MDLowerCriticalThreshold;\r
+  EFI_EXP_BASE10_DATA      MDUpperCriticalThreshold;\r
+  EFI_EXP_BASE10_DATA      MDLowerNonrecoverableThreshold;\r
+  EFI_EXP_BASE10_DATA      MDUpperNonrecoverableThreshold;\r
+  UINT32                   TemperatureProbeOemDefined;\r
+} EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Electrical Current Probe - SMBIOS Type 29\r
+//\r
+\r
+#define EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_RECORD_NUMBER  0x00000017\r
+\r
+typedef struct {\r
+  UINT32 ElectricalCurrentProbeSite    :5;\r
+  UINT32 ElectricalCurrentProbeStatus  :3;\r
+  UINT32 Reserved                      :24;\r
+} EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION;\r
+\r
+typedef struct {\r
+  STRING_REF               ElectricalCurrentProbeDescription;\r
+  EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION\r
+                           ElectricalCurrentProbeLocation;\r
+  EFI_EXP_BASE10_DATA      ElectricalCurrentProbeMaximumValue;\r
+  EFI_EXP_BASE10_DATA      ElectricalCurrentProbeMinimumValue;\r
+  EFI_EXP_BASE10_DATA      ElectricalCurrentProbeResolution;\r
+  EFI_EXP_BASE10_DATA      ElectricalCurrentProbeTolerance;\r
+  EFI_EXP_BASE10_DATA      ElectricalCurrentProbeAccuracy;\r
+  EFI_EXP_BASE10_DATA      ElectricalCurrentProbeNominalValue;\r
+  EFI_EXP_BASE10_DATA      MDLowerNoncriticalThreshold;\r
+  EFI_EXP_BASE10_DATA      MDUpperNoncriticalThreshold;\r
+  EFI_EXP_BASE10_DATA      MDLowerCriticalThreshold;\r
+  EFI_EXP_BASE10_DATA      MDUpperCriticalThreshold;\r
+  EFI_EXP_BASE10_DATA      MDLowerNonrecoverableThreshold;\r
+  EFI_EXP_BASE10_DATA      MDUpperNonrecoverableThreshold;\r
+  UINT32                   ElectricalCurrentProbeOemDefined;\r
+} EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Out-of-Band Remote Access - SMBIOS Type 30\r
+//\r
+\r
+#define EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_RECORD_NUMBER  0x00000018\r
+\r
+typedef struct  {\r
+  UINT32 InboundConnectionEnabled            :1;\r
+  UINT32 OutboundConnectionEnabled           :1;\r
+  UINT32 Reserved                            :30;\r
+} EFI_MISC_REMOTE_ACCESS_CONNECTIONS;\r
+\r
+typedef struct {\r
+  STRING_REF                             RemoteAccessManufacturerNameDescription;\r
+  EFI_MISC_REMOTE_ACCESS_CONNECTIONS     RemoteAccessConnections;\r
+} EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Misc. BIS Entry Point - SMBIOS Type 31\r
+//\r
+#define EFI_MISC_BIS_ENTRY_POINT_RECORD_NUMBER          0x00000019\r
+\r
+typedef struct {\r
+  EFI_PHYSICAL_ADDRESS       BisEntryPoint;\r
+} EFI_MISC_BIS_ENTRY_POINT_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Misc. Boot Information - SMBIOS Type 32\r
+//\r
+#define EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER  0x0000001A\r
+\r
+typedef enum {\r
+  EfiBootInformationStatusNoError                  = 0x00,\r
+  EfiBootInformationStatusNoBootableMedia          = 0x01,\r
+  EfiBootInformationStatusNormalOSFailedLoading    = 0x02,\r
+  EfiBootInformationStatusFirmwareDetectedFailure  = 0x03,\r
+  EfiBootInformationStatusOSDetectedFailure        = 0x04,\r
+  EfiBootInformationStatusUserRequestedBoot        = 0x05,\r
+  EfiBootInformationStatusSystemSecurityViolation  = 0x06,\r
+  EfiBootInformationStatusPreviousRequestedImage   = 0x07,\r
+  EfiBootInformationStatusWatchdogTimerExpired     = 0x08,\r
+  EfiBootInformationStatusStartReserved            = 0x09,\r
+  EfiBootInformationStatusStartOemSpecific         = 0x80,\r
+  EfiBootInformationStatusStartProductSpecific     = 0xC0,\r
+} EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE;\r
+\r
+typedef struct {\r
+  EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus;\r
+  UINT8                                      BootInformationData[9];\r
+} EFI_MISC_BOOT_INFORMATION_STATUS_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Management Device - SMBIOS Type 34\r
+//\r
+#define EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_RECORD_NUMBER   0x0000001B\r
+\r
+typedef enum {\r
+  EfiManagementDeviceTypeOther      = 0x01,\r
+  EfiManagementDeviceTypeUnknown    = 0x02,\r
+  EfiManagementDeviceTypeLm75       = 0x03,\r
+  EfiManagementDeviceTypeLm78       = 0x04,\r
+  EfiManagementDeviceTypeLm79       = 0x05,\r
+  EfiManagementDeviceTypeLm80       = 0x06,\r
+  EfiManagementDeviceTypeLm81       = 0x07,\r
+  EfiManagementDeviceTypeAdm9240    = 0x08,\r
+  EfiManagementDeviceTypeDs1780     = 0x09,\r
+  EfiManagementDeviceTypeMaxim1617  = 0x0A,\r
+  EfiManagementDeviceTypeGl518Sm    = 0x0B,\r
+  EfiManagementDeviceTypeW83781D    = 0x0C,\r
+  EfiManagementDeviceTypeHt82H791   = 0x0D,\r
+} EFI_MISC_MANAGEMENT_DEVICE_TYPE;\r
+\r
+typedef enum {\r
+  EfiManagementDeviceAddressTypeOther   = 1,\r
+  EfiManagementDeviceAddressTypeUnknown = 2,\r
+  EfiManagementDeviceAddressTypeIOPort  = 3,\r
+  EfiManagementDeviceAddressTypeMemory  = 4,\r
+  EfiManagementDeviceAddressTypeSmbus   = 5\r
+} EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE;\r
+\r
+typedef struct {\r
+  STRING_REF                       ManagementDeviceDescription;\r
+  EFI_MISC_MANAGEMENT_DEVICE_TYPE  ManagementDeviceType;\r
+  UINTN                            ManagementDeviceAddress;\r
+  EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE\r
+                                   ManagementDeviceAddressType;\r
+} EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Management Device Component - SMBIOS Type 35\r
+//\r
+\r
+#define EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER  0x0000001C\r
+\r
+typedef struct {\r
+  STRING_REF               ManagementDeviceComponentDescription;\r
+  EFI_INTER_LINK_DATA      ManagementDeviceLink;\r
+  EFI_INTER_LINK_DATA      ManagementDeviceComponentLink;\r
+} EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA;\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// IPMI Data Record - SMBIOS Type 38\r
+//\r
+typedef enum {\r
+  EfiIpmiOther = 0,\r
+  EfiIpmiKcs   = 1,\r
+  EfiIpmiSmic  = 2,\r
+  EfiIpmiBt    = 3,\r
+} EFI_MISC_IPMI_INTERFACE_TYPE;\r
+\r
+typedef struct {\r
+  UINT16  IpmiSpecLeastSignificantDigit:4;\r
+  UINT16  IpmiSpecMostSignificantDigit: 4;\r
+  UINT16  Reserved:                     8;\r
+} EFI_MISC_IPMI_SPECIFICATION_REVISION;\r
+\r
+typedef struct {\r
+  EFI_MISC_IPMI_INTERFACE_TYPE          IpmiInterfaceType;\r
+  EFI_MISC_IPMI_SPECIFICATION_REVISION  IpmiSpecificationRevision;\r
+  UINT16                                IpmiI2CSlaveAddress;\r
+  UINT16                                IpmiNvDeviceAddress;\r
+  UINT64                                IpmiBaseAddress;\r
+  EFI_DEVICE_PATH_PROTOCOL              IpmiDevicePath;\r
+} EFI_MISC_IPMI_INTERFACE_TYPE_DATA;\r
+\r
+#define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER  0x0000001D\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+//System Power supply Record - SMBIOS Type 39\r
+//\r
+typedef struct {\r
+  UINT16  PowerSupplyHotReplaceable  :1;\r
+  UINT16  PowerSupplyPresent         :1;\r
+  UINT16  PowerSupplyUnplugged       :1;\r
+  UINT16  InputVoltageRangeSwitch    :4;\r
+  UINT16  PowerSupplyStatus          :3;\r
+  UINT16  PowerSupplyType            :4;\r
+  UINT16  Reserved                   :2;\r
+} POWER_SUPPLY_CHARACTERISTICS;\r
+\r
+typedef struct {\r
+  UINT16                          PowerUnitGroup;\r
+  STRING_REF                      PowerSupplyLocation;\r
+  STRING_REF                      PowerSupplyDeviceName;\r
+  STRING_REF                      PowerSupplyManufacturer;\r
+  STRING_REF                      PowerSupplySerialNumber;\r
+  STRING_REF                      PowerSupplyAssetTagNumber;\r
+  STRING_REF                      PowerSupplyModelPartNumber;\r
+  STRING_REF                      PowerSupplyRevisionLevel;\r
+  UINT16                          PowerSupplyMaxPowerCapacity;\r
+  POWER_SUPPLY_CHARACTERISTICS    PowerSupplyCharacteristics;\r
+  EFI_INTER_LINK_DATA             PowerSupplyInputVoltageProbeLink;\r
+  EFI_INTER_LINK_DATA             PowerSupplyCoolingDeviceLink;\r
+  EFI_INTER_LINK_DATA             PowerSupplyInputCurrentProbeLink;\r
+} EFI_MISC_SYSTEM_POWER_SUPPLY_DATA;\r
+\r
+#define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER 0x0000001E\r
+\r
+//\r
+//////////////////////////////////////////////////////////////////////////////\r
+//\r
+// OEM Data Record - SMBIOS Type 0x80-0xFF\r
+//\r
+typedef struct {\r
+  UINT8       Type;\r
+  UINT8       Length;\r
+  UINT16      Handle;\r
+} SMBIOS_STRUCTURE_HDR;\r
+\r
+typedef struct {\r
+  SMBIOS_STRUCTURE_HDR          Header;\r
+  UINT8                         RawData[1];\r
+} EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA;\r
+\r
+#define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER  0x0000001F\r
+\r
+//\r
+// Declare the following strutures alias to use them more conviniently.\r
+//\r
+typedef EFI_MISC_LAST_PCI_BUS_DATA                        EFI_MISC_LAST_PCI_BUS;\r
+typedef EFI_MISC_BIOS_VENDOR_DATA                         EFI_MISC_BIOS_VENDOR;\r
+typedef EFI_MISC_SYSTEM_MANUFACTURER_DATA                 EFI_MISC_SYSTEM_MANUFACTURER;\r
+typedef EFI_MISC_BASE_BOARD_MANUFACTURER_DATA             EFI_MISC_BASE_BOARD_MANUFACTURER;\r
+typedef EFI_MISC_CHASSIS_MANUFACTURER_DATA                EFI_MISC_CHASSIS_MANUFACTURER;\r
+typedef EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA  EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR;\r
+typedef EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA             EFI_MISC_SYSTEM_SLOT_DESIGNATION;\r
+typedef EFI_MISC_ONBOARD_DEVICE_DATA                      EFI_MISC_ONBOARD_DEVICE;\r
+typedef EFI_MISC_PORTING_DEVICE_TYPE_DATA                 EFI_MISC_ONBOARD_DEVICE_TYPE_DATA;\r
+typedef EFI_MISC_OEM_STRING_DATA                          EFI_MISC_OEM_STRING;\r
+typedef EFI_MISC_SYSTEM_OPTION_STRING_DATA                EFI_MISC_SYSTEM_OPTION_STRING;\r
+typedef EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA     EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES;\r
+typedef EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA              EFI_MISC_SYSTEM_LANGUAGE_STRING;\r
+typedef EFI_MISC_SYSTEM_EVENT_LOG_DATA                    EFI_MISC_SYSTEM_EVENT_LOG;\r
+typedef EFI_MISC_BIS_ENTRY_POINT_DATA                     EFI_MISC_BIS_ENTRY_POINT;\r
+typedef EFI_MISC_BOOT_INFORMATION_STATUS_DATA             EFI_MISC_BOOT_INFORMATION_STATUS;\r
+typedef EFI_MISC_SYSTEM_POWER_SUPPLY_DATA                 EFI_MISC_SYSTEM_POWER_SUPPLY;\r
+typedef EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA         EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION;\r
+\r
+typedef union {\r
+  EFI_MISC_LAST_PCI_BUS_DATA                         LastPciBus;\r
+  EFI_MISC_BIOS_VENDOR_DATA                          MiscBiosVendor;\r
+  EFI_MISC_SYSTEM_MANUFACTURER_DATA                  MiscSystemManufacturer;\r
+  EFI_MISC_BASE_BOARD_MANUFACTURER_DATA              MiscBaseBoardManufacturer;\r
+  EFI_MISC_CHASSIS_MANUFACTURER_DATA                 MiscChassisManufacturer;\r
+  EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA   MiscPortInternalConnectorDesignator;\r
+  EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA              MiscSystemSlotDesignation;\r
+  EFI_MISC_ONBOARD_DEVICE_DATA                       MiscOnboardDevice;\r
+  EFI_MISC_OEM_STRING_DATA                           MiscOemString;\r
+  EFI_MISC_SYSTEM_OPTION_STRING_DATA                 MiscOptionString;\r
+  EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA      NumberOfInstallableLanguages;\r
+  EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA               MiscSystemLanguageString;\r
+  EFI_MISC_SYSTEM_EVENT_LOG_DATA                     MiscSystemEventLog;\r
+  EFI_MISC_GROUP_NAME_DATA                           MiscGroupNameData;\r
+  EFI_MISC_GROUP_ITEM_SET_DATA                       MiscGroupItemSetData;\r
+  EFI_MISC_PORTING_DEVICE_TYPE_DATA                  MiscPortingDeviceTypeData;\r
+  EFI_MISC_RESET_CAPABILITIES_DATA                   MiscResetCapablilitiesData;\r
+  EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA           MiscHardwareSecuritySettingsData;\r
+  EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA             MiscScheduledPowerOnMonthData;\r
+  EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA            MiscVoltagePorbeDescriptionData;\r
+  EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA             MiscCoolingDeviceTempLinkData;\r
+  EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA        MiscTemperatureProbeDescriptionData;\r
+  EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA MiscElectricalCurrentProbeDescriptionData;\r
+  EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA\r
+                                                     MiscRemoteAccessManufacturerDescriptionData;\r
+  EFI_MISC_BIS_ENTRY_POINT_DATA                      MiscBisEntryPoint;\r
+  EFI_MISC_BOOT_INFORMATION_STATUS_DATA              MiscBootInformationStatus;\r
+  EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA        MiscMangementDeviceDescriptionData;\r
+  EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA\r
+                                                     MiscmangementDeviceComponentDescriptionData;\r
+  EFI_MISC_IPMI_INTERFACE_TYPE_DATA                  MiscIpmiInterfaceTypeData;\r
+  EFI_MISC_SYSTEM_POWER_SUPPLY_DATA                  MiscPowerSupplyInfo;\r
+  EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA          MiscSmbiosStructEncapsulation;\r
+} EFI_MISC_SUBCLASS_RECORDS;\r
+\r
+//\r
+//\r
+//\r
+typedef struct {\r
+  EFI_SUBCLASS_TYPE1_HEADER       Header;\r
+  EFI_MISC_SUBCLASS_RECORDS       Record;\r
+} EFI_MISC_SUBCLASS_DRIVER_DATA;\r
+\r
+#pragma pack()\r
+\r
+//\r
+// Sub Class Header type1\r
+//\r
+\r
+#define EFI_SUBCLASS_INSTANCE_RESERVED       0\r
+#define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF  //16 bit\r
+\r
+#endif\r
diff --git a/IntelFrameworkPkg/Include/Framework/FrameworkDxeCis.h b/IntelFrameworkPkg/Include/Framework/FrameworkDxeCis.h
new file mode 100644 (file)
index 0000000..0b7ffdf
--- /dev/null
@@ -0,0 +1,104 @@
+/** @file\r
+  Include file that supportes Framework extension to the EFI 1.10 spec.\r
+\r
+  This include file must only contain things defined in the Framework\r
+  specifications. If a code construct is defined in the Framework specification\r
+  it must be included by this include file.\r
+\r
+  Copyright (c) 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
+  Module Name:    FrameworkDxeCis.h\r
+\r
+**/\r
+\r
+#ifndef _FRAMEWORK_DXE_CIS_H_\r
+#define _FRAMEWORK_DXE_CIS_H_\r
+\r
+#include <PiDxe.h>\r
+#include <Common/FrameworkStatusCode.h>\r
+#include <Protocol/StatusCode.h>\r
+\r
+//\r
+// Function prototype for invoking a function on an Application Processor\r
+// Used by both the SMM infrastructure and the MP Services Protocol\r
+//\r
+typedef\r
+VOID\r
+(EFIAPI *EFI_AP_PROCEDURE) (\r
+  IN  VOID                              *Buffer\r
+  );\r
+\r
+typedef struct {\r
+  EFI_TABLE_HEADER              Hdr;\r
+\r
+  //\r
+  // Time services\r
+  //\r
+  EFI_GET_TIME                  GetTime;\r
+  EFI_SET_TIME                  SetTime;\r
+  EFI_GET_WAKEUP_TIME           GetWakeupTime;\r
+  EFI_SET_WAKEUP_TIME           SetWakeupTime;\r
+\r
+  //\r
+  // Virtual memory services\r
+  //\r
+  EFI_SET_VIRTUAL_ADDRESS_MAP   SetVirtualAddressMap;\r
+  EFI_CONVERT_POINTER           ConvertPointer;\r
+\r
+  //\r
+  // Variable services\r
+  //\r
+  EFI_GET_VARIABLE              GetVariable;\r
+  EFI_GET_NEXT_VARIABLE_NAME    GetNextVariableName;\r
+  EFI_SET_VARIABLE              SetVariable;\r
+\r
+  //\r
+  // Misc\r
+  //\r
+  EFI_GET_NEXT_HIGH_MONO_COUNT  GetNextHighMonotonicCount;\r
+  EFI_RESET_SYSTEM              ResetSystem;\r
+\r
+  //\r
+  // Framework extension to EFI 1.10 runtime table\r
+  // It was moved to a protocol to not conflict with UEFI 2.0\r
+  //\r
+  EFI_REPORT_STATUS_CODE        ReportStatusCode;\r
+} FRAMEWORK_EFI_RUNTIME_SERVICES;\r
+\r
+#define EFI_EVENT_RUNTIME_CONTEXT       0x20000000\r
+#define EFI_EVENT_NOTIFY_SIGNAL_ALL     0x00000400\r
+#define EFI_EVENT_SIGNAL_READY_TO_BOOT  0x00000203\r
+#define EFI_EVENT_SIGNAL_LEGACY_BOOT    0x00000204\r
+\r
+\r
+typedef struct {\r
+  EFI_DEVICE_PATH_PROTOCOL  Header;\r
+  EFI_GUID                  TianoSpecificDevicePath;\r
+  UINT32                    Type;\r
+} TIANO_DEVICE_PATH;\r
+\r
+#define TIANO_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH_TYPE         0x01\r
+typedef struct {\r
+  TIANO_DEVICE_PATH     Tiano;\r
+  EFI_GUID              NameGuid;\r
+} FRAMEWORK_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH;\r
+\r
+\r
+//\r
+// Function prototype for invoking a function on an Application Processor\r
+// Used by both the SMM infrastructure and the MP Services Protocol\r
+//\r
+typedef\r
+VOID\r
+(EFIAPI *EFI_AP_PROCEDURE) (\r
+  IN  VOID                              *Buffer\r
+  );\r
+\r
+#endif\r
diff --git a/IntelFrameworkPkg/Include/Framework/FrameworkFirmwareFileSystem.h b/IntelFrameworkPkg/Include/Framework/FrameworkFirmwareFileSystem.h
new file mode 100644 (file)
index 0000000..c0acbc9
--- /dev/null
@@ -0,0 +1,31 @@
+/** @file\r
+  This file defines the data structures that comprise the FFS file system.\r
+\r
+  Copyright (c) 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
+  Module Name:  FrameworkFirmwareFileSystem.h\r
+\r
+  @par Revision Reference:\r
+  These definitions are from Firmware File System Spec 0.9 but not in PI specs.\r
+\r
+**/\r
+\r
+#ifndef _FRAMEWORK_FIRMWARE_FILE_SYSTEM_H_\r
+#define _FRAMEWORK_FIRMWARE_FILE_SYSTEM_H_\r
+\r
+#include <PiPei.h>\r
+\r
+typedef UINT16                      EFI_FFS_FILE_TAIL;\r
+\r
+#define FFS_ATTRIB_TAIL_PRESENT     0x01\r
+#define FFS_ATTRIB_RECOVERY         0x02\r
+#define FFS_ATTRIB_HEADER_EXTENSION 0x04\r
+\r
+#endif\r
diff --git a/IntelFrameworkPkg/Include/Framework/FrameworkFirmwareVolumeHeader.h b/IntelFrameworkPkg/Include/Framework/FrameworkFirmwareVolumeHeader.h
new file mode 100644 (file)
index 0000000..1f584fe
--- /dev/null
@@ -0,0 +1,82 @@
+/** @file\r
+  Defines data structure that is the volume header found at the beginning of\r
+  all firmware volumes that are either memory mapped, or have an\r
+  associated FirmwareVolumeBlock protocol.\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:  FirmwareVolumeHeader.h\r
+\r
+  @par Revision Reference:\r
+  These definitions are from Firmware Volume Block Spec 0.9.\r
+\r
+**/\r
+\r
+#ifndef __EFI_FIRMWARE_VOLUME_HEADER_H__\r
+#define __EFI_FIRMWARE_VOLUME_HEADER_H__\r
+\r
+//\r
+// Firmware Volume Block Attributes definition\r
+//\r
+typedef UINT32  EFI_FVB_ATTRIBUTES;\r
+\r
+//\r
+// Firmware Volume Block Attributes bit definitions\r
+//\r
+#define EFI_FVB_READ_DISABLED_CAP   0x00000001\r
+#define EFI_FVB_READ_ENABLED_CAP    0x00000002\r
+#define EFI_FVB_READ_STATUS         0x00000004\r
+\r
+#define EFI_FVB_WRITE_DISABLED_CAP  0x00000008\r
+#define EFI_FVB_WRITE_ENABLED_CAP   0x00000010\r
+#define EFI_FVB_WRITE_STATUS        0x00000020\r
+\r
+#define EFI_FVB_LOCK_CAP            0x00000040\r
+#define EFI_FVB_LOCK_STATUS         0x00000080\r
+\r
+#define EFI_FVB_STICKY_WRITE        0x00000200\r
+#define EFI_FVB_MEMORY_MAPPED       0x00000400\r
+#define EFI_FVB_ERASE_POLARITY      0x00000800\r
+\r
+#define EFI_FVB_ALIGNMENT_CAP       0x00008000\r
+#define EFI_FVB_ALIGNMENT_2         0x00010000\r
+#define EFI_FVB_ALIGNMENT_4         0x00020000\r
+#define EFI_FVB_ALIGNMENT_8         0x00040000\r
+#define EFI_FVB_ALIGNMENT_16        0x00080000\r
+#define EFI_FVB_ALIGNMENT_32        0x00100000\r
+#define EFI_FVB_ALIGNMENT_64        0x00200000\r
+#define EFI_FVB_ALIGNMENT_128       0x00400000\r
+#define EFI_FVB_ALIGNMENT_256       0x00800000\r
+#define EFI_FVB_ALIGNMENT_512       0x01000000\r
+#define EFI_FVB_ALIGNMENT_1K        0x02000000\r
+#define EFI_FVB_ALIGNMENT_2K        0x04000000\r
+#define EFI_FVB_ALIGNMENT_4K        0x08000000\r
+#define EFI_FVB_ALIGNMENT_8K        0x10000000\r
+#define EFI_FVB_ALIGNMENT_16K       0x20000000\r
+#define EFI_FVB_ALIGNMENT_32K       0x40000000\r
+#define EFI_FVB_ALIGNMENT_64K       0x80000000\r
+\r
+#define EFI_FVB_CAPABILITIES  (EFI_FVB_READ_DISABLED_CAP | \\r
+                              EFI_FVB_READ_ENABLED_CAP | \\r
+                              EFI_FVB_WRITE_DISABLED_CAP | \\r
+                              EFI_FVB_WRITE_ENABLED_CAP | \\r
+                              EFI_FVB_LOCK_CAP \\r
+                              )\r
+\r
+#define EFI_TEST_FFS_ATTRIBUTES_BIT(FvbAttributes, TestAttributes, Bit) \\r
+    ( \\r
+      (BOOLEAN) ( \\r
+          (FvbAttributes & EFI_FVB_ERASE_POLARITY) ? (((~TestAttributes) & Bit) == Bit) : ((TestAttributes & Bit) == Bit) \\r
+        ) \\r
+    )\r
+\r
+#define EFI_FVB_STATUS    (EFI_FVB_READ_STATUS | EFI_FVB_WRITE_STATUS | EFI_FVB_LOCK_STATUS)\r
+\r
+#endif\r
diff --git a/IntelFrameworkPkg/Include/Framework/FrameworkFirmwareVolumeImageFormat.h b/IntelFrameworkPkg/Include/Framework/FrameworkFirmwareVolumeImageFormat.h
new file mode 100644 (file)
index 0000000..9b4e3b6
--- /dev/null
@@ -0,0 +1,43 @@
+/** @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:  FrameworkFimrwareVolumeImageFormat.h\r
+\r
+  @par Revision Reference:\r
+  These definitions are from Firmware Volume Spec 0.9.\r
+\r
+**/\r
+\r
+#ifndef __FRAMEWORK_FIRMWARE_VOLUME_IMAGE_FORMAT_H__\r
+#define __FRAMEWORK_FIRMWARE_VOLUME_IMAGE_FORMAT_H__\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
+#define EFI_FV_FILETYPE_ALL                         0x00\r
+\r
+#endif\r
diff --git a/IntelFrameworkPkg/Include/Framework/FrameworkHob.h b/IntelFrameworkPkg/Include/Framework/FrameworkHob.h
new file mode 100644 (file)
index 0000000..cdc419d
--- /dev/null
@@ -0,0 +1,36 @@
+/** @file\r
+  This file defines the data structures per HOB specification v0.9.\r
+\r
+  Copyright (c) 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
+  Module Name:  FrameworkFirmwareFileSystem.h\r
+\r
+  @par Revision Reference:\r
+  These definitions are from HOB Spec 0.9 but not adopted by PI specs.\r
+\r
+**/\r
+\r
+#ifndef _FRAMEWORK_HOB_H_\r
+#define _FRAMEWORK_HOB_H_\r
+\r
+#include <PiPei.h>\r
+\r
+//\r
+// Capsule volume HOB -- identical to a firmware volume\r
+//\r
+#define EFI_HOB_TYPE_CV 0x0008\r
+\r
+typedef struct {\r
+  EFI_HOB_GENERIC_HEADER  Header;\r
+  EFI_PHYSICAL_ADDRESS    BaseAddress;\r
+  UINT64                  Length;\r
+} EFI_HOB_CAPSULE_VOLUME;\r
+\r
+#endif\r
diff --git a/IntelFrameworkPkg/Include/Framework/FrameworkLegacy16.h b/IntelFrameworkPkg/Include/Framework/FrameworkLegacy16.h
new file mode 100644 (file)
index 0000000..7f80c8a
--- /dev/null
@@ -0,0 +1,431 @@
+/** @file\r
+  API between 16-bit Legacy BIOS and EFI\r
+\r
+  We need to figure out what the 16-bit code is going to use to\r
+  represent these data structures. Is a pointer SEG:OFF or 32-bit...\r
+\r
+  Copyright (c) 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
+  Module Name:  FrameworkLegacy16.h\r
+\r
+  @par Revision Reference:\r
+  These definitions are from Compatibility Support Module Spec Version 0.96.\r
+\r
+**/\r
+\r
+#ifndef _FRAMEWORK_LEGACY_16_H_\r
+#define _FRAMEWORK_LEGACY_16_H_\r
+\r
+#include <Base.h>\r
+\r
+//\r
+// All structures defined in this header file are packed on byte boundary\r
+//\r
+#pragma pack(1)\r
+\r
+typedef UINT8 SERIAL_MODE;\r
+typedef UINT8 PARALLEL_MODE;\r
+\r
+///////////////////////////////////////////////////////////////////////////////\r
+// EFI_COMPATIBILITY16_TABLE is located at a 16-byte boundary starting with the\r
+// signature "$EFI"\r
+///////////////////////////////////////////////////////////////////////////////\r
+\r
+#define EFI_COMPATIBILITY16_TABLE_SIGNATURE EFI_SIGNATURE_32('$', 'E', 'F', 'I')\r
+\r
+typedef struct {\r
+  UINT32  Signature;      // "$EFI"\r
+  UINT8   TableChecksum;\r
+  UINT8   TableLength;\r
+  UINT8   EfiMajorRevision;\r
+  UINT8   EfiMinorRevision;\r
+  UINT8   TableMajorRevision;\r
+  UINT8   TableMinorRevision;\r
+  UINT16  Reserved;\r
+  UINT16  Compatibility16CallSegment;\r
+  UINT16  Compatibility16CallOffset;\r
+  UINT16  PnPInstallationCheckSegment;\r
+  UINT16  PnPInstallationCheckOffset;\r
+  UINT32  EfiSystemTable; // The physical address of EFI_SYSTEM_TABLE\r
+  UINT32  OemIdStringPointer;\r
+  UINT32  AcpiRsdPtrPointer;\r
+  UINT16  OemRevision;\r
+  UINT32  E820Pointer;\r
+  UINT32  E820Length;\r
+  UINT32  IrqRoutingTablePointer;\r
+  UINT32  IrqRoutingTableLength;\r
+  UINT32  MpTablePtr;\r
+  UINT32  MpTableLength;\r
+  UINT16  OemIntSegment;\r
+  UINT16  OemIntOffset;\r
+  UINT16  Oem32Segment;\r
+  UINT16  Oem32Offset;\r
+  UINT16  Oem16Segment;\r
+  UINT16  Oem16Offset;\r
+  UINT16  TpmSegment;\r
+  UINT16  TpmOffset;\r
+  UINT32  IbvPointer;\r
+  UINT32  PciExpressBase;\r
+  UINT8   LastPciBus;\r
+} EFI_COMPATIBILITY16_TABLE;\r
+\r
+///////////////////////////////////////////////////////////////////////////////\r
+// Functions provided by the CSM binary\r
+///////////////////////////////////////////////////////////////////////////////\r
+typedef enum {\r
+  Legacy16InitializeYourself    = 0x0000,\r
+  Legacy16UpdateBbs             = 0x0001,\r
+  Legacy16PrepareToBoot         = 0x0002,\r
+  Legacy16Boot                  = 0x0003,\r
+  Legacy16RetrieveLastBootDevice= 0x0004,\r
+  Legacy16DispatchOprom         = 0x0005,\r
+  Legacy16GetTableAddress       = 0x0006,\r
+  Legacy16SetKeyboardLeds       = 0x0007,\r
+  Legacy16InstallPciHandler     = 0x0008\r
+} EFI_COMPATIBILITY_FUNCTIONS;\r
+\r
+///////////////////////////////////////////////////////////////////////////////\r
+// EFI_TO_COMPATIBILITY16_INIT_TABLE\r
+///////////////////////////////////////////////////////////////////////////////\r
+typedef struct {\r
+  UINT32  BiosLessThan1MB;\r
+  UINT32  HiPmmMemory;\r
+  UINT32  HiPmmMemorySizeInBytes;\r
+  UINT16  ReverseThunkCallSegment;\r
+  UINT16  ReverseThunkCallOffset;\r
+  UINT32  NumberE820Entries;\r
+  UINT32  OsMemoryAbove1Mb;\r
+  UINT32  ThunkStart;\r
+  UINT32  ThunkSizeInBytes;\r
+  UINT32  LowPmmMemory;\r
+  UINT32  LowPmmMemorySizeInBytes;\r
+} EFI_TO_COMPATIBILITY16_INIT_TABLE;\r
+\r
+///////////////////////////////////////////////////////////////////////////////\r
+// EFI_TO_COMPATIBILITY16_BOOT_TABLE\r
+///////////////////////////////////////////////////////////////////////////////\r
+\r
+typedef UINT8 SERIAL_MODE;\r
+typedef UINT8 PARALLEL_MODE;\r
+\r
+//\r
+// DEVICE_PRODUCER_SERIAL & its modes\r
+//\r
+typedef struct {\r
+  UINT16      Address;\r
+  UINT8       Irq;\r
+  SERIAL_MODE Mode;\r
+} DEVICE_PRODUCER_SERIAL;\r
+\r
+#define DEVICE_SERIAL_MODE_NORMAL               0x00\r
+#define DEVICE_SERIAL_MODE_IRDA                 0x01\r
+#define DEVICE_SERIAL_MODE_ASK_IR               0x02\r
+#define DEVICE_SERIAL_MODE_DUPLEX_HALF          0x00\r
+#define DEVICE_SERIAL_MODE_DUPLEX_FULL          0x10\r
+\r
+//\r
+// DEVICE_PRODUCER_PARALLEL & its modes\r
+//\r
+typedef struct {\r
+  UINT16        Address;\r
+  UINT8         Irq;\r
+  UINT8         Dma;\r
+  PARALLEL_MODE Mode;\r
+} DEVICE_PRODUCER_PARALLEL;\r
+\r
+#define DEVICE_PARALLEL_MODE_MODE_OUTPUT_ONLY   0x00\r
+#define DEVICE_PARALLEL_MODE_MODE_BIDIRECTIONAL 0x01\r
+#define DEVICE_PARALLEL_MODE_MODE_EPP           0x02\r
+#define DEVICE_PARALLEL_MODE_MODE_ECP           0x03\r
+\r
+//\r
+// DEVICE_PRODUCER_FLOPPY\r
+//\r
+typedef struct {\r
+  UINT16  Address;\r
+  UINT8   Irq;\r
+  UINT8   Dma;\r
+  UINT8   NumberOfFloppy;\r
+} DEVICE_PRODUCER_FLOPPY;\r
+\r
+//\r
+// LEGACY_DEVICE_FLAGS\r
+//\r
+typedef struct {\r
+  UINT32  A20Kybd : 1;\r
+  UINT32  A20Port90 : 1;\r
+  UINT32  Reserved : 30;\r
+} LEGACY_DEVICE_FLAGS;\r
+\r
+//\r
+// DEVICE_PRODUCER_DATA_HEADER\r
+//\r
+typedef struct {\r
+  DEVICE_PRODUCER_SERIAL    Serial[4];\r
+  DEVICE_PRODUCER_PARALLEL  Parallel[3];\r
+  DEVICE_PRODUCER_FLOPPY    Floppy;\r
+  UINT8                     MousePresent;\r
+  LEGACY_DEVICE_FLAGS       Flags;\r
+} DEVICE_PRODUCER_DATA_HEADER;\r
+\r
+//\r
+// ATAPI_IDENTIFY\r
+//\r
+typedef struct {\r
+  UINT16  Raw[256];\r
+} ATAPI_IDENTIFY;\r
+\r
+//\r
+// HDD_INFO & its status\r
+//\r
+typedef struct {\r
+  UINT16          Status;\r
+  UINT32          Bus;\r
+  UINT32          Device;\r
+  UINT32          Function;\r
+  UINT16          CommandBaseAddress;\r
+  UINT16          ControlBaseAddress;\r
+  UINT16          BusMasterAddress;\r
+  UINT8           HddIrq;\r
+  ATAPI_IDENTIFY  IdentifyDrive[2];\r
+} HDD_INFO;\r
+\r
+#define HDD_PRIMARY               0x01\r
+#define HDD_SECONDARY             0x02\r
+#define HDD_MASTER_ATAPI_CDROM    0x04\r
+#define HDD_SLAVE_ATAPI_CDROM     0x08\r
+#define HDD_MASTER_IDE            0x20\r
+#define HDD_SLAVE_IDE             0x40\r
+#define HDD_MASTER_ATAPI_ZIPDISK  0x10\r
+#define HDD_SLAVE_ATAPI_ZIPDISK   0x80\r
+\r
+//\r
+// BBS_STATUS_FLAGS\r
+//\r
+typedef struct {\r
+  UINT16  OldPosition : 4;\r
+  UINT16  Reserved1 : 4;\r
+  UINT16  Enabled : 1;\r
+  UINT16  Failed : 1;\r
+  UINT16  MediaPresent : 2;\r
+  UINT16  Reserved2 : 4;\r
+} BBS_STATUS_FLAGS;\r
+\r
+//\r
+// BBS_TABLE, device type values & boot priority values\r
+//\r
+typedef struct {\r
+  UINT16            BootPriority;\r
+  UINT32            Bus;\r
+  UINT32            Device;\r
+  UINT32            Function;\r
+  UINT8             Class;\r
+  UINT8             SubClass;\r
+  UINT16            MfgStringOffset;\r
+  UINT16            MfgStringSegment;\r
+  UINT16            DeviceType;\r
+  BBS_STATUS_FLAGS  StatusFlags;\r
+  UINT16            BootHandlerOffset;\r
+  UINT16            BootHandlerSegment;\r
+  UINT16            DescStringOffset;\r
+  UINT16            DescStringSegment;\r
+  UINT32            InitPerReserved;\r
+  UINT32            AdditionalIrq13Handler;\r
+  UINT32            AdditionalIrq18Handler;\r
+  UINT32            AdditionalIrq19Handler;\r
+  UINT32            AdditionalIrq40Handler;\r
+  UINT8             AssignedDriveNumber;\r
+  UINT32            AdditionalIrq41Handler;\r
+  UINT32            AdditionalIrq46Handler;\r
+  UINT32            IBV1;\r
+  UINT32            IBV2;\r
+} BBS_TABLE;\r
+\r
+#define BBS_FLOPPY        0x01\r
+#define BBS_HARDDISK      0x02\r
+#define BBS_CDROM         0x03\r
+#define BBS_PCMCIA        0x04\r
+#define BBS_USB           0x05\r
+#define BBS_EMBED_NETWORK 0x06\r
+#define BBS_BEV_DEVICE    0x80\r
+#define BBS_UNKNOWN       0xff\r
+\r
+#define BBS_DO_NOT_BOOT_FROM    0xFFFC\r
+#define BBS_LOWEST_PRIORITY     0xFFFD\r
+#define BBS_UNPRIORITIZED_ENTRY 0xFFFE\r
+#define BBS_IGNORE_ENTRY        0xFFFF\r
+\r
+//\r
+// SMM_ATTRIBUTES & relating type, port and data size constants\r
+//\r
+typedef struct {\r
+  UINT16  Type : 3;\r
+  UINT16  PortGranularity : 3;\r
+  UINT16  DataGranularity : 3;\r
+  UINT16  Reserved : 7;\r
+} SMM_ATTRIBUTES;\r
+\r
+#define STANDARD_IO       0x00\r
+#define STANDARD_MEMORY   0x01\r
+\r
+#define PORT_SIZE_8       0x00\r
+#define PORT_SIZE_16      0x01\r
+#define PORT_SIZE_32      0x02\r
+#define PORT_SIZE_64      0x03\r
+\r
+#define DATA_SIZE_8       0x00\r
+#define DATA_SIZE_16      0x01\r
+#define DATA_SIZE_32      0x02\r
+#define DATA_SIZE_64      0x03\r
+\r
+//\r
+// SMM_FUNCTION & relating constants\r
+//\r
+typedef struct {\r
+  UINT16  Function : 15;\r
+  UINT16  Owner : 1;\r
+} SMM_FUNCTION;\r
+\r
+#define INT15_D042        0x0000\r
+#define GET_USB_BOOT_INFO 0x0001\r
+#define DMI_PNP_50_57     0x0002\r
+\r
+#define STANDARD_OWNER    0x0\r
+#define OEM_OWNER         0x1\r
+\r
+//\r
+// SMM_ENTRY\r
+//\r
+// This structure assumes both port and data sizes are 1. SmmAttribute must be\r
+// properly to reflect that assumption.\r
+//\r
+typedef struct {\r
+  SMM_ATTRIBUTES  SmmAttributes;\r
+  SMM_FUNCTION    SmmFunction;\r
+  UINT8           SmmPort;\r
+  UINT8           SmmData;\r
+} SMM_ENTRY;\r
+\r
+//\r
+// SMM_TABLE\r
+//\r
+typedef struct {\r
+  UINT16    NumSmmEntries;\r
+  SMM_ENTRY SmmEntry;\r
+} SMM_TABLE;\r
+\r
+//\r
+// UDC_ATTRIBUTES\r
+//\r
+typedef struct {\r
+  UINT8 DirectoryServiceValidity : 1;\r
+  UINT8 RabcaUsedFlag : 1;\r
+  UINT8 ExecuteHddDiagnosticsFlag : 1;\r
+  UINT8 Reserved : 5;\r
+} UDC_ATTRIBUTES;\r
+\r
+//\r
+// UD_TABLE\r
+//\r
+typedef struct {\r
+  UDC_ATTRIBUTES  Attributes;\r
+  UINT8           DeviceNumber;\r
+  UINT8           BbsTableEntryNumberForParentDevice;\r
+  UINT8           BbsTableEntryNumberForBoot;\r
+  UINT8           BbsTableEntryNumberForHddDiag;\r
+  UINT8           BeerData[128];\r
+  UINT8           ServiceAreaData[64];\r
+} UD_TABLE;\r
+\r
+//\r
+// EFI_TO_COMPATIBILITY16_BOOT_TABLE\r
+//\r
+#define EFI_TO_LEGACY_MAJOR_VERSION 0x02\r
+#define EFI_TO_LEGACY_MINOR_VERSION 0x00\r
+#define MAX_IDE_CONTROLLER          8\r
+\r
+typedef struct {\r
+  UINT16                      MajorVersion;\r
+  UINT16                      MinorVersion;\r
+  UINT32                      AcpiTable;   // 4 GB range\r
+  UINT32                      SmbiosTable; // 4 GB range\r
+  UINT32                      SmbiosTableLength;\r
+\r
+  //\r
+  // Legacy SIO state\r
+  //\r
+  DEVICE_PRODUCER_DATA_HEADER SioData;\r
+\r
+  UINT16                      DevicePathType;\r
+  UINT16                      PciIrqMask;\r
+  UINT32                      NumberE820Entries;\r
+\r
+  //\r
+  // Controller & Drive Identify[2] per controller information\r
+  //\r
+  HDD_INFO                    HddInfo[MAX_IDE_CONTROLLER];\r
+\r
+  UINT32                      NumberBbsEntries;\r
+  UINT32                      BbsTable;\r
+  UINT32                      SmmTable;\r
+  UINT32                      OsMemoryAbove1Mb;\r
+  UINT32                      UnconventionalDeviceTable;\r
+} EFI_TO_COMPATIBILITY16_BOOT_TABLE;\r
+\r
+///////////////////////////////////////////////////////////////////////////////\r
+// EFI_DISPATCH_OPROM_TABLE\r
+///////////////////////////////////////////////////////////////////////////////\r
+\r
+typedef struct {\r
+  UINT16  PnPInstallationCheckSegment;\r
+  UINT16  PnPInstallationCheckOffset;\r
+  UINT16  OpromSegment;\r
+  UINT8   PciBus;\r
+  UINT8   PciDeviceFunction;\r
+  UINT8   NumberBbsEntries;\r
+  VOID    *BbsTablePointer; /// @bug: variable size on 32/64-bit systems.\r
+} EFI_DISPATCH_OPROM_TABLE;\r
+\r
+///////////////////////////////////////////////////////////////////////////////\r
+// EFI_LEGACY_INSTALL_PCI_HANDLER\r
+///////////////////////////////////////////////////////////////////////////////\r
+typedef struct {\r
+  UINT8   PciBus;\r
+  UINT8   PciDeviceFun;\r
+  UINT8   PciSegment;\r
+  UINT8   PciClass;\r
+  UINT8   PciSubclass;\r
+  UINT8   PciInterface;\r
+\r
+  //\r
+  // Primary section\r
+  //\r
+  UINT8   PrimaryIrq;\r
+  UINT8   PrimaryReserved;\r
+  UINT16  PrimaryControl;\r
+  UINT16  PrimaryBase;\r
+  UINT16  PrimaryBusMaster;\r
+\r
+  //\r
+  // Secondary Section\r
+  //\r
+  UINT8   SecondaryIrq;\r
+  UINT8   SecondaryReserved;\r
+  UINT16  SecondaryControl;\r
+  UINT16  SecondaryBase;\r
+  UINT16  SecondaryBusMaster;\r
+} EFI_LEGACY_INSTALL_PCI_HANDLER;\r
+\r
+//\r
+// Restore default pack value\r
+//\r
+#pragma pack()\r
+\r
+#endif\r
diff --git a/IntelFrameworkPkg/Include/Framework/FrameworkSmmCis.h b/IntelFrameworkPkg/Include/Framework/FrameworkSmmCis.h
new file mode 100644 (file)
index 0000000..6fe8e66
--- /dev/null
@@ -0,0 +1,480 @@
+/** @file\r
+  Include file matches things in the Smm CIS spec.\r
+\r
+  Copyright (c) 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
+  Module Name:  FrameworkSmmCis.h\r
+\r
+  @par Revision Reference:\r
+  Version 0.9.\r
+\r
+**/\r
+\r
+#ifndef _FRAMEWORK_SMM_CIS_H_\r
+#define _FRAMEWORK_SMM_CIS_H_\r
+\r
+#include <Common/FrameworkDxeCis.h>\r
+\r
+#define EFI_SMM_CPU_IO_GUID \\r
+  { \\r
+    0x5f439a0b, 0x45d8, 0x4682, {0xa4, 0xf4, 0xf0, 0x57, 0x6b, 0x51, 0x34, 0x41 } \\r
+  }\r
+\r
+typedef struct _EFI_SMM_SYSTEM_TABLE      EFI_SMM_SYSTEM_TABLE;\r
+typedef struct _EFI_SMM_CPU_IO_INTERFACE  EFI_SMM_CPU_IO_INTERFACE;\r
+\r
+\r
+//\r
+// SMM Base specification constant and types\r
+//\r
+#define SMM_SMST_SIGNATURE            EFI_SIGNATURE_32 ('S', 'M', 'S', 'T')\r
+#define EFI_SMM_SYSTEM_TABLE_REVISION (0 << 16) | (0x09)\r
+\r
+//\r
+// *******************************************************\r
+// EFI_SMM_IO_WIDTH\r
+// *******************************************************\r
+//\r
+typedef enum {\r
+  SMM_IO_UINT8  = 0,\r
+  SMM_IO_UINT16 = 1,\r
+  SMM_IO_UINT32 = 2,\r
+  SMM_IO_UINT64 = 3\r
+} EFI_SMM_IO_WIDTH;\r
+\r
+/**\r
+  Provides the basic memory and I/O interfaces that are used to\r
+  abstract accesses to devices.\r
+\r
+  @param  This             The EFI_SMM_CPU_IO_INTERFACE instance.\r
+  @param  Width            Signifies the width of the I/O operations.\r
+  @param  Address          The base address of the I/O operations.\r
+  @param  Count            The number of I/O operations to perform.\r
+  @param  Buffer           For read operations, the destination buffer to store the results.\r
+                           For write operations, the source buffer from which to write data.\r
+\r
+  @retval EFI_SUCCESS           The data was read from or written to the device.\r
+  @retval EFI_UNSUPPORTED       The Address is not valid for this system.\r
+  @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.\r
+  @retval EFI_OUT_OF_RESOURCES  The request could not be completed due to a lack of resources.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SMM_CPU_IO) (\r
+  IN EFI_SMM_CPU_IO_INTERFACE         *This,\r
+  IN EFI_SMM_IO_WIDTH                 Width,\r
+  IN UINT64                           Address,\r
+  IN UINTN                            Count,\r
+  IN OUT VOID                         *Buffer\r
+  );\r
+\r
+typedef struct {\r
+  EFI_SMM_CPU_IO  Read;\r
+  EFI_SMM_CPU_IO  Write;\r
+} EFI_SMM_IO_ACCESS;\r
+\r
+struct _EFI_SMM_CPU_IO_INTERFACE {\r
+  EFI_SMM_IO_ACCESS Mem;\r
+  EFI_SMM_IO_ACCESS Io;\r
+};\r
+\r
+/**\r
+  Allocates pool memory from SMRAM for IA-32 or runtime memory for\r
+  the Itanium processor family.\r
+\r
+  @param  PoolType         The type of pool to allocate.The only supported type is EfiRuntimeServicesData\r
+  @param  Size             The number of bytes to allocate from the pool.\r
+  @param  Buffer           A pointer to a pointer to the allocated buffer if the call\r
+                           succeeds; undefined otherwise.\r
+\r
+  @retval EFI_SUCCESS           The requested number of bytes was allocated.\r
+  @retval EFI_OUT_OF_RESOURCES  The pool requested could not be allocated.\r
+  @retval EFI_UNSUPPORTED       In runtime.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SMMCORE_ALLOCATE_POOL) (\r
+  IN EFI_MEMORY_TYPE                PoolType,\r
+  IN UINTN                          Size,\r
+  OUT VOID                          **Buffer\r
+  );\r
+\r
+/**\r
+  Returns pool memory to the system.\r
+\r
+  @param  Buffer           Pointer to the buffer to free.\r
+\r
+  @retval EFI_SUCCESS           The memory was returned to the system.\r
+  @retval EFI_INVALID_PARAMETER Buffer was invalid.\r
+  @retval EFI_UNSUPPORTED       In runtime.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SMMCORE_FREE_POOL) (\r
+  IN VOID                   *Buffer\r
+  );\r
+\r
+/**\r
+  Allocates memory pages from the system.\r
+\r
+  @param  Type             The type of allocation to perform.\r
+  @param  MemoryType       The only supported type is EfiRuntimeServicesData\r
+  @param  NumberofPages    The number of contiguous 4 KB pages to allocate\r
+  @param  Memory           Pointer to a physical address. On input, the way in which\r
+                           the address is used depends on the value of Type. On output, the address\r
+                           is set to the base of the page range that was allocated.\r
+\r
+  @retval EFI_SUCCESS           The requested pages were allocated.\r
+  @retval EFI_OUT_OF_RESOURCES  The pages requested could not be allocated.\r
+  @retval EFI_NOT_FOUND         The requested pages could not be found.\r
+  @retval EFI_INVALID_PARAMETER Type is not AllocateAnyPages or AllocateMaxAddress\r
+                                or AllocateAddress. Or MemoryType is in the range EfiMaxMemoryType..0x7FFFFFFF.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SMMCORE_ALLOCATE_PAGES) (\r
+  IN EFI_ALLOCATE_TYPE      Type,\r
+  IN EFI_MEMORY_TYPE        MemoryType,\r
+  IN UINTN                  NumberOfPages,\r
+  OUT EFI_PHYSICAL_ADDRESS  *Memory\r
+  );\r
+\r
+/**\r
+  Frees memory pages for the system.\r
+\r
+  @param  Memory           The base physical address of the pages to be freed\r
+  @param  NumberOfPages    The number of contiguous 4 KB pages to free.\r
+\r
+  @retval EFI_SUCCESS           The requested memory pages were freed.\r
+  @retval EFI_INVALID_PARAMETER Memory is not a page-aligned address or NumberOfPages is invalid.\r
+  @retval EFI_NOT_FOUND         The requested memory pages were not allocated with SmmAllocatePages().\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SMMCORE_FREE_PAGES) (\r
+  IN EFI_PHYSICAL_ADDRESS   Memory,\r
+  IN UINTN                  NumberOfPages\r
+  );\r
+\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SMM_STARTUP_THIS_AP) (\r
+  IN  EFI_AP_PROCEDURE                    Procedure,\r
+  IN  UINTN                               CpuNumber,\r
+  IN  OUT VOID                            *ProcArguments OPTIONAL\r
+  );\r
+\r
+typedef struct {\r
+  UINT8                 Reserved1[248];\r
+  UINT32                SMBASE;\r
+  UINT32                SMMRevId;\r
+  UINT16                IORestart;\r
+  UINT16                AutoHALTRestart;\r
+  UINT8                 Reserved2[164];\r
+  UINT32                ES;\r
+  UINT32                CS;\r
+  UINT32                SS;\r
+  UINT32                DS;\r
+  UINT32                FS;\r
+  UINT32                GS;\r
+  UINT32                LDTBase;\r
+  UINT32                TR;\r
+  UINT32                DR7;\r
+  UINT32                DR6;\r
+  UINT32                EAX;\r
+  UINT32                ECX;\r
+  UINT32                EDX;\r
+  UINT32                EBX;\r
+  UINT32                ESP;\r
+  UINT32                EBP;\r
+  UINT32                ESI;\r
+  UINT32                EDI;\r
+  UINT32                EIP;\r
+  UINT32                EFLAGS;\r
+  UINT32                CR3;\r
+  UINT32                CR0;\r
+} EFI_SMI_CPU_SAVE_STATE;\r
+\r
+typedef struct {\r
+  UINT64   reserved;\r
+  UINT64   r1;\r
+  UINT64   r2;\r
+  UINT64   r3;\r
+  UINT64   r4;\r
+  UINT64   r5;\r
+  UINT64   r6;\r
+  UINT64   r7;\r
+  UINT64   r8;\r
+  UINT64   r9;\r
+  UINT64   r10;\r
+  UINT64   r11;\r
+  UINT64   r12;\r
+  UINT64   r13;\r
+  UINT64   r14;\r
+  UINT64   r15;\r
+  UINT64   r16;\r
+  UINT64   r17;\r
+  UINT64   r18;\r
+  UINT64   r19;\r
+  UINT64   r20;\r
+  UINT64   r21;\r
+  UINT64   r22;\r
+  UINT64   r23;\r
+  UINT64   r24;\r
+  UINT64   r25;\r
+  UINT64   r26;\r
+  UINT64   r27;\r
+  UINT64   r28;\r
+  UINT64   r29;\r
+  UINT64   r30;\r
+  UINT64   r31;\r
+\r
+  UINT64   pr;\r
+\r
+  UINT64   b0;\r
+  UINT64   b1;\r
+  UINT64   b2;\r
+  UINT64   b3;\r
+  UINT64   b4;\r
+  UINT64   b5;\r
+  UINT64   b6;\r
+  UINT64   b7;\r
+\r
+  // application registers\r
+  UINT64   ar_rsc;\r
+  UINT64   ar_bsp;\r
+  UINT64   ar_bspstore;\r
+  UINT64   ar_rnat;\r
+\r
+  UINT64   ar_fcr;\r
+\r
+  UINT64   ar_eflag;\r
+  UINT64   ar_csd;\r
+  UINT64   ar_ssd;\r
+  UINT64   ar_cflg;\r
+  UINT64   ar_fsr;\r
+  UINT64   ar_fir;\r
+  UINT64   ar_fdr;\r
+\r
+  UINT64   ar_ccv;\r
+\r
+  UINT64   ar_unat;\r
+\r
+  UINT64   ar_fpsr;\r
+\r
+  UINT64   ar_pfs;\r
+  UINT64   ar_lc;\r
+  UINT64   ar_ec;\r
+\r
+  // control registers\r
+  UINT64   cr_dcr;\r
+  UINT64   cr_itm;\r
+  UINT64   cr_iva;\r
+  UINT64   cr_pta;\r
+  UINT64   cr_ipsr;\r
+  UINT64   cr_isr;\r
+  UINT64   cr_iip;\r
+  UINT64   cr_ifa;\r
+  UINT64   cr_itir;\r
+  UINT64   cr_iipa;\r
+  UINT64   cr_ifs;\r
+  UINT64   cr_iim;\r
+  UINT64   cr_iha;\r
+\r
+  // debug registers\r
+  UINT64   dbr0;\r
+  UINT64   dbr1;\r
+  UINT64   dbr2;\r
+  UINT64   dbr3;\r
+  UINT64   dbr4;\r
+  UINT64   dbr5;\r
+  UINT64   dbr6;\r
+  UINT64   dbr7;\r
+\r
+  UINT64   ibr0;\r
+  UINT64   ibr1;\r
+  UINT64   ibr2;\r
+  UINT64   ibr3;\r
+  UINT64   ibr4;\r
+  UINT64   ibr5;\r
+  UINT64   ibr6;\r
+  UINT64   ibr7;\r
+\r
+  // virtual registers\r
+  UINT64   int_nat;         // nat bits for R1-R31\r
+\r
+} EFI_PMI_SYSTEM_CONTEXT;\r
+\r
+typedef union {\r
+  EFI_SMI_CPU_SAVE_STATE     Ia32SaveState;\r
+  EFI_PMI_SYSTEM_CONTEXT     ItaniumSaveState;\r
+} EFI_SMM_CPU_SAVE_STATE;\r
+\r
+typedef struct {\r
+  UINT16                Fcw;\r
+  UINT16                Fsw;\r
+  UINT16                Ftw;\r
+  UINT16                Opcode;\r
+  UINT32                Eip;\r
+  UINT16                Cs;\r
+  UINT16                Rsvd1;\r
+  UINT32                DataOffset;\r
+  UINT16                Ds;\r
+  UINT8                 Rsvd2[10];\r
+  UINT8                 St0Mm0[10], Rsvd3[6];\r
+  UINT8                 St0Mm1[10], Rsvd4[6];\r
+  UINT8                 St0Mm2[10], Rsvd5[6];\r
+  UINT8                 St0Mm3[10], Rsvd6[6];\r
+  UINT8                 St0Mm4[10], Rsvd7[6];\r
+  UINT8                 St0Mm5[10], Rsvd8[6];\r
+  UINT8                 St0Mm6[10], Rsvd9[6];\r
+  UINT8                 St0Mm7[10], Rsvd10[6];\r
+  UINT8                 Rsvd11[22*16];\r
+} EFI_SMI_OPTIONAL_FPSAVE_STATE;\r
+\r
+typedef struct {\r
+  UINT64   f2[2];\r
+  UINT64   f3[2];\r
+  UINT64   f4[2];\r
+  UINT64   f5[2];\r
+  UINT64   f6[2];\r
+  UINT64   f7[2];\r
+  UINT64   f8[2];\r
+  UINT64   f9[2];\r
+  UINT64   f10[2];\r
+  UINT64   f11[2];\r
+  UINT64   f12[2];\r
+  UINT64   f13[2];\r
+  UINT64   f14[2];\r
+  UINT64   f15[2];\r
+  UINT64   f16[2];\r
+  UINT64   f17[2];\r
+  UINT64   f18[2];\r
+  UINT64   f19[2];\r
+  UINT64   f20[2];\r
+  UINT64   f21[2];\r
+  UINT64   f22[2];\r
+  UINT64   f23[2];\r
+  UINT64   f24[2];\r
+  UINT64   f25[2];\r
+  UINT64   f26[2];\r
+  UINT64   f27[2];\r
+  UINT64   f28[2];\r
+  UINT64   f29[2];\r
+  UINT64   f30[2];\r
+  UINT64   f31[2];\r
+} EFI_PMI_OPTIONAL_FLOATING_POINT_CONTEXT;\r
+\r
+typedef union {\r
+  EFI_SMI_OPTIONAL_FPSAVE_STATE             Ia32FpSave;\r
+  EFI_PMI_OPTIONAL_FLOATING_POINT_CONTEXT   ItaniumFpSave;\r
+} EFI_SMM_FLOATING_POINT_SAVE_STATE;\r
+\r
+/**\r
+  This function is the main entry point for an SMM handler dispatch\r
+  or communicate-based callback.\r
+\r
+  @param  SmmImageHandle   A unique value returned by the SMM infrastructure\r
+                           in response to registration for a communicate-based callback or dispatch.\r
+  @param  CommunicationBuffer\r
+                           An optional buffer that will be populated\r
+                           by the SMM infrastructure in response to a non-SMM agent (preboot or runtime)\r
+                           invoking the EFI_SMM_BASE_PROTOCOL.Communicate() service.\r
+  @param  SourceSize       If CommunicationBuffer is non-NULL, this field\r
+                           indicates the size of the data payload in this buffer.\r
+\r
+  @return Status Code\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SMM_HANDLER_ENTRY_POINT) (\r
+  IN EFI_HANDLE             SmmImageHandle,\r
+  IN OUT VOID               *CommunicationBuffer OPTIONAL,\r
+  IN OUT UINTN              *SourceSize OPTIONAL\r
+  );\r
+\r
+/**\r
+  The SmmInstallConfigurationTable() function is used to maintain the list\r
+  of configuration tables that are stored in the System Management System\r
+  Table.  The list is stored as an array of (GUID, Pointer) pairs.  The list\r
+  must be allocated from pool memory with PoolType set to EfiRuntimeServicesData.\r
+\r
+  @param  SystemTable      A pointer to the SMM System Table.\r
+  @param  Guid             A pointer to the GUID for the entry to add, update, or remove.\r
+  @param  Table            A pointer to the buffer of the table to add.\r
+  @param  TableSize        The size of the table to install.\r
+\r
+  @retval EFI_SUCCESS           The (Guid, Table) pair was added, updated, or removed.\r
+  @retval EFI_INVALID_PARAMETER Guid is not valid.\r
+  @retval EFI_NOT_FOUND         An attempt was made to delete a non-existent entry.\r
+  @retval EFI_OUT_OF_RESOURCES  There is not enough memory available to complete the operation.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SMM_INSTALL_CONFIGURATION_TABLE) (\r
+  IN EFI_SMM_SYSTEM_TABLE         *SystemTable,\r
+  IN EFI_GUID                     *Guid,\r
+  IN VOID                         *Table,\r
+  IN UINTN                        TableSize\r
+  );\r
+\r
+//\r
+// System Management System Table (SMST)\r
+//\r
+struct _EFI_SMM_SYSTEM_TABLE {\r
+  EFI_TABLE_HEADER                    Hdr;\r
+\r
+  CHAR16                              *SmmFirmwareVendor;\r
+  UINT32                              SmmFirmwareRevision;\r
+\r
+  EFI_SMM_INSTALL_CONFIGURATION_TABLE SmmInstallConfigurationTable;\r
+\r
+  //\r
+  // I/O Services\r
+  //\r
+  EFI_GUID                            EfiSmmCpuIoGuid;\r
+  EFI_SMM_CPU_IO_INTERFACE            SmmIo;\r
+\r
+  //\r
+  // Runtime memory service\r
+  //\r
+  EFI_SMMCORE_ALLOCATE_POOL           SmmAllocatePool;\r
+  EFI_SMMCORE_FREE_POOL               SmmFreePool;\r
+  EFI_SMMCORE_ALLOCATE_PAGES          SmmAllocatePages;\r
+  EFI_SMMCORE_FREE_PAGES              SmmFreePages;\r
+\r
+  //\r
+  // MP service\r
+  //\r
+  EFI_SMM_STARTUP_THIS_AP             SmmStartupThisAp;\r
+\r
+  //\r
+  // CPU information records\r
+  //\r
+  UINTN                               CurrentlyExecutingCpu;\r
+  UINTN                               NumberOfCpus;\r
+  EFI_SMM_CPU_SAVE_STATE              *CpuSaveState;\r
+  EFI_SMM_FLOATING_POINT_SAVE_STATE   *CpuOptionalFloatingPointState;\r
+\r
+  //\r
+  // Extensibility table\r
+  //\r
+  UINTN                               NumberOfTableEntries;\r
+  EFI_CONFIGURATION_TABLE             *SmmConfigurationTable;\r
+};\r
+\r
+#endif\r
diff --git a/IntelFrameworkPkg/Include/Framework/FrameworkStatusCode.h b/IntelFrameworkPkg/Include/Framework/FrameworkStatusCode.h
new file mode 100644 (file)
index 0000000..6e997b6
--- /dev/null
@@ -0,0 +1,905 @@
+/** @file\r
+  Status Code Definitions, according to Intel Platform Innovation Framework\r
+  for EFI Status Codes Specification\r
+\r
+  The file is divided into sections for ease of use.\r
+\r
+<pre>\r
+  Section:    Contents:\r
+  1           General Status Code Definitions\r
+  2           Class definitions\r
+  3           Computing Unit Subclasses, Progress and Error Codes\r
+  4           Peripheral Subclasses, Progress and Error Codes.\r
+  5           IO Bus Subclasses, Progress and Error Codes.\r
+  6           Software Subclasses, Progress and Error Codes.\r
+  7           Debug Codes\r
+</pre>\r
+\r
+  Copyright (c) 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
+  Module Name:  StatusCode.h\r
+\r
+  @par Revision Reference:\r
+  Version 0.92.\r
+\r
+**/\r
+\r
+#ifndef _FRAMEWORK_STATUS_CODE_H_\r
+#define _FRAMEWORK_STATUS_CODE_H_\r
+\r
+#include <PiPei.h>\r
+\r
+//\r
+// /////////////////////////////////////////////////////////////////////////////\r
+// Section 1\r
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+//\r
+// Data Hub Status Code class record definition\r
+// This structure isn't adopted by PI, so is defined here.\r
+//\r
+typedef struct {\r
+  EFI_STATUS_CODE_TYPE  CodeType;\r
+  EFI_STATUS_CODE_VALUE Value;\r
+  UINT32                Instance;\r
+  EFI_GUID              CallerId;\r
+  EFI_STATUS_CODE_DATA  Data;\r
+} DATA_HUB_STATUS_CODE_DATA_RECORD;\r
+\r
+//\r
+// /////////////////////////////////////////////////////////////////////////////\r
+// Section 2\r
+///////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Class definitions\r
+// Values of 4-127 are reserved for future use by this\r
+// specification.\r
+// Values in the range 127-255 are reserved for OEM use.\r
+//\r
+#define EFI_COMPUTING_UNIT  0x00000000\r
+#define EFI_PERIPHERAL      0x01000000\r
+#define EFI_IO_BUS          0x02000000\r
+#define EFI_SOFTWARE        0x03000000\r
+\r
+//\r
+// General partitioning scheme for Progress and Error Codes are\r
+// 0x0000-0x0FFF  - Shared by all sub-classes in a given class\r
+// 0x1000-0x7FFF  - Subclass Specific\r
+// 0x8000-0xFFFF  - OEM specific\r
+//\r
+#define EFI_SUBCLASS_SPECIFIC 0x1000\r
+#define EFI_OEM_SPECIFIC      0x8000\r
+\r
+//\r
+// /////////////////////////////////////////////////////////////////////////////\r
+// Section 3\r
+///////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Computing Unit Subclass definitions.\r
+// Values of 8-127 are reserved for future use by this\r
+// specification.\r
+// Values of 128-255 are reserved for OEM use.\r
+//\r
+#define EFI_COMPUTING_UNIT_UNSPECIFIED        (EFI_COMPUTING_UNIT | 0x00000000)\r
+#define EFI_COMPUTING_UNIT_HOST_PROCESSOR     (EFI_COMPUTING_UNIT | 0x00010000)\r
+#define EFI_COMPUTING_UNIT_FIRMWARE_PROCESSOR (EFI_COMPUTING_UNIT | 0x00020000)\r
+#define EFI_COMPUTING_UNIT_IO_PROCESSOR       (EFI_COMPUTING_UNIT | 0x00030000)\r
+#define EFI_COMPUTING_UNIT_CACHE              (EFI_COMPUTING_UNIT | 0x00040000)\r
+#define EFI_COMPUTING_UNIT_MEMORY             (EFI_COMPUTING_UNIT | 0x00050000)\r
+#define EFI_COMPUTING_UNIT_CHIPSET            (EFI_COMPUTING_UNIT | 0x00060000)\r
+\r
+//\r
+// Computing Unit Class Progress Code definitions.\r
+// These are shared by all subclasses.\r
+//\r
+#define EFI_CU_PC_INIT_BEGIN  0x00000000\r
+#define EFI_CU_PC_INIT_END    0x00000001\r
+\r
+//\r
+// Computing Unit Unspecified Subclass Progress Code definitions.\r
+//\r
+//\r
+// Computing Unit Host Processor Subclass Progress Code definitions.\r
+//\r
+#define EFI_CU_HP_PC_POWER_ON_INIT          (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_CU_HP_PC_CACHE_INIT             (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_CU_HP_PC_RAM_INIT               (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+#define EFI_CU_HP_PC_MEMORY_CONTROLLER_INIT (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
+#define EFI_CU_HP_PC_IO_INIT                (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
+#define EFI_CU_HP_PC_BSP_SELECT             (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
+#define EFI_CU_HP_PC_BSP_RESELECT           (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
+#define EFI_CU_HP_PC_AP_INIT                (EFI_SUBCLASS_SPECIFIC | 0x00000007)\r
+#define EFI_CU_HP_PC_SMM_INIT               (EFI_SUBCLASS_SPECIFIC | 0x00000008)\r
+\r
+//\r
+// Computing Unit Firmware Processor Subclass Progress Code definitions.\r
+//\r
+//\r
+// Computing Unit IO Processor Subclass Progress Code definitions.\r
+//\r
+//\r
+// Computing Unit Cache Subclass Progress Code definitions.\r
+//\r
+#define EFI_CU_CACHE_PC_PRESENCE_DETECT (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_CU_CACHE_PC_CONFIGURATION   (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+\r
+//\r
+// Computing Unit Memory Subclass Progress Code definitions.\r
+//\r
+#define EFI_CU_MEMORY_PC_SPD_READ         (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_CU_MEMORY_PC_PRESENCE_DETECT  (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_CU_MEMORY_PC_TIMING           (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+#define EFI_CU_MEMORY_PC_CONFIGURING      (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
+#define EFI_CU_MEMORY_PC_OPTIMIZING       (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
+#define EFI_CU_MEMORY_PC_INIT             (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
+#define EFI_CU_MEMORY_PC_TEST             (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
+\r
+//\r
+// Computing Unit Chipset Subclass Progress Code definitions.\r
+//\r
+//\r
+// Computing Unit Class Error Code definitions.\r
+// These are shared by all subclasses.\r
+//\r
+#define EFI_CU_EC_NON_SPECIFIC    0x00000000\r
+#define EFI_CU_EC_DISABLED        0x00000001\r
+#define EFI_CU_EC_NOT_SUPPORTED   0x00000002\r
+#define EFI_CU_EC_NOT_DETECTED    0x00000003\r
+#define EFI_CU_EC_NOT_CONFIGURED  0x00000004\r
+\r
+//\r
+// Computing Unit Unspecified Subclass Error Code definitions.\r
+//\r
+//\r
+// Computing Unit Host Processor Subclass Error Code definitions.\r
+//\r
+#define EFI_CU_HP_EC_INVALID_TYPE         (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_CU_HP_EC_INVALID_SPEED        (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_CU_HP_EC_MISMATCH             (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+#define EFI_CU_HP_EC_TIMER_EXPIRED        (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
+#define EFI_CU_HP_EC_SELF_TEST            (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
+#define EFI_CU_HP_EC_INTERNAL             (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
+#define EFI_CU_HP_EC_THERMAL              (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
+#define EFI_CU_HP_EC_LOW_VOLTAGE          (EFI_SUBCLASS_SPECIFIC | 0x00000007)\r
+#define EFI_CU_HP_EC_HIGH_VOLTAGE         (EFI_SUBCLASS_SPECIFIC | 0x00000008)\r
+#define EFI_CU_HP_EC_CACHE                (EFI_SUBCLASS_SPECIFIC | 0x00000009)\r
+#define EFI_CU_HP_EC_MICROCODE_UPDATE     (EFI_SUBCLASS_SPECIFIC | 0x0000000A)\r
+#define EFI_CU_HP_EC_CORRECTABLE          (EFI_SUBCLASS_SPECIFIC | 0x0000000B)\r
+#define EFI_CU_HP_EC_UNCORRECTABLE        (EFI_SUBCLASS_SPECIFIC | 0x0000000C)\r
+#define EFI_CU_HP_EC_NO_MICROCODE_UPDATE  (EFI_SUBCLASS_SPECIFIC | 0x0000000D)\r
+\r
+//\r
+// Computing Unit Firmware Processor Subclass Error Code definitions.\r
+//\r
+#define EFI_CU_FP_EC_HARD_FAIL  (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_CU_FP_EC_SOFT_FAIL  (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_CU_FP_EC_COMM_ERROR (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+\r
+//\r
+// Computing Unit IO Processor Subclass Error Code definitions.\r
+//\r
+//\r
+// Computing Unit Cache Subclass Error Code definitions.\r
+//\r
+#define EFI_CU_CACHE_EC_INVALID_TYPE  (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_CU_CACHE_EC_INVALID_SPEED (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_CU_CACHE_EC_INVALID_SIZE  (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+#define EFI_CU_CACHE_EC_MISMATCH      (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
+\r
+//\r
+// Computing Unit Memory Subclass Error Code definitions.\r
+//\r
+#define EFI_CU_MEMORY_EC_INVALID_TYPE   (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_CU_MEMORY_EC_INVALID_SPEED  (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_CU_MEMORY_EC_CORRECTABLE    (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+#define EFI_CU_MEMORY_EC_UNCORRECTABLE  (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
+#define EFI_CU_MEMORY_EC_SPD_FAIL       (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
+#define EFI_CU_MEMORY_EC_INVALID_SIZE   (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
+#define EFI_CU_MEMORY_EC_MISMATCH       (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
+#define EFI_CU_MEMORY_EC_S3_RESUME_FAIL (EFI_SUBCLASS_SPECIFIC | 0x00000007)\r
+#define EFI_CU_MEMORY_EC_UPDATE_FAIL    (EFI_SUBCLASS_SPECIFIC | 0x00000008)\r
+#define EFI_CU_MEMORY_EC_NONE_DETECTED  (EFI_SUBCLASS_SPECIFIC | 0x00000009)\r
+#define EFI_CU_MEMORY_EC_NONE_USEFUL    (EFI_SUBCLASS_SPECIFIC | 0x0000000A)\r
+\r
+//\r
+// Computing Unit Chipset Subclass Error Code definitions.\r
+//\r
+\r
+///////////////////////////////////////////////////////////////////////////////\r
+// Section 4\r
+///////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Peripheral Subclass definitions.\r
+// Values of 12-127 are reserved for future use by this\r
+// specification.\r
+// Values of 128-255 are reserved for OEM use.\r
+//\r
+#define EFI_PERIPHERAL_UNSPECIFIED      (EFI_PERIPHERAL | 0x00000000)\r
+#define EFI_PERIPHERAL_KEYBOARD         (EFI_PERIPHERAL | 0x00010000)\r
+#define EFI_PERIPHERAL_MOUSE            (EFI_PERIPHERAL | 0x00020000)\r
+#define EFI_PERIPHERAL_LOCAL_CONSOLE    (EFI_PERIPHERAL | 0x00030000)\r
+#define EFI_PERIPHERAL_REMOTE_CONSOLE   (EFI_PERIPHERAL | 0x00040000)\r
+#define EFI_PERIPHERAL_SERIAL_PORT      (EFI_PERIPHERAL | 0x00050000)\r
+#define EFI_PERIPHERAL_PARALLEL_PORT    (EFI_PERIPHERAL | 0x00060000)\r
+#define EFI_PERIPHERAL_FIXED_MEDIA      (EFI_PERIPHERAL | 0x00070000)\r
+#define EFI_PERIPHERAL_REMOVABLE_MEDIA  (EFI_PERIPHERAL | 0x00080000)\r
+#define EFI_PERIPHERAL_AUDIO_INPUT      (EFI_PERIPHERAL | 0x00090000)\r
+#define EFI_PERIPHERAL_AUDIO_OUTPUT     (EFI_PERIPHERAL | 0x000A0000)\r
+#define EFI_PERIPHERAL_LCD_DEVICE       (EFI_PERIPHERAL | 0x000B0000)\r
+#define EFI_PERIPHERAL_NETWORK          (EFI_PERIPHERAL | 0x000C0000)\r
+\r
+//\r
+// Peripheral Class Progress Code definitions.\r
+// These are shared by all subclasses.\r
+//\r
+#define EFI_P_PC_INIT             0x00000000\r
+#define EFI_P_PC_RESET            0x00000001\r
+#define EFI_P_PC_DISABLE          0x00000002\r
+#define EFI_P_PC_PRESENCE_DETECT  0x00000003\r
+#define EFI_P_PC_ENABLE           0x00000004\r
+#define EFI_P_PC_RECONFIG         0x00000005\r
+#define EFI_P_PC_DETECTED         0x00000006\r
+\r
+//\r
+// Peripheral Class Unspecified Subclass Progress Code definitions.\r
+//\r
+//\r
+// Peripheral Class Keyboard Subclass Progress Code definitions.\r
+//\r
+#define EFI_P_KEYBOARD_PC_CLEAR_BUFFER  (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_P_KEYBOARD_PC_SELF_TEST     (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+\r
+//\r
+// Peripheral Class Mouse Subclass Progress Code definitions.\r
+//\r
+#define EFI_P_MOUSE_PC_SELF_TEST  (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+\r
+//\r
+// Peripheral Class Local Console Subclass Progress Code definitions.\r
+//\r
+//\r
+// Peripheral Class Remote Console Subclass Progress Code definitions.\r
+//\r
+//\r
+// Peripheral Class Serial Port Subclass Progress Code definitions.\r
+//\r
+#define EFI_P_SERIAL_PORT_PC_CLEAR_BUFFER (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+\r
+//\r
+// Peripheral Class Parallel Port Subclass Progress Code definitions.\r
+//\r
+//\r
+// Peripheral Class Fixed Media Subclass Progress Code definitions.\r
+//\r
+//\r
+// Peripheral Class Removable Media Subclass Progress Code definitions.\r
+//\r
+//\r
+// Peripheral Class Audio Input Subclass Progress Code definitions.\r
+//\r
+//\r
+// Peripheral Class Audio Output Subclass Progress Code definitions.\r
+//\r
+//\r
+// Peripheral Class LCD Device Subclass Progress Code definitions.\r
+//\r
+//\r
+// Peripheral Class Network Subclass Progress Code definitions.\r
+//\r
+//\r
+// Peripheral Class Error Code definitions.\r
+// These are shared by all subclasses.\r
+//\r
+#define EFI_P_EC_NON_SPECIFIC       0x00000000\r
+#define EFI_P_EC_DISABLED           0x00000001\r
+#define EFI_P_EC_NOT_SUPPORTED      0x00000002\r
+#define EFI_P_EC_NOT_DETECTED       0x00000003\r
+#define EFI_P_EC_NOT_CONFIGURED     0x00000004\r
+#define EFI_P_EC_INTERFACE_ERROR    0x00000005\r
+#define EFI_P_EC_CONTROLLER_ERROR   0x00000006\r
+#define EFI_P_EC_INPUT_ERROR        0x00000007\r
+#define EFI_P_EC_OUTPUT_ERROR       0x00000008\r
+#define EFI_P_EC_RESOURCE_CONFLICT  0x00000009\r
+\r
+//\r
+// Peripheral Class Unspecified Subclass Error Code definitions.\r
+//\r
+//\r
+// Peripheral Class Keyboard Subclass Error Code definitions.\r
+//\r
+#define EFI_P_KEYBOARD_EC_LOCKED    (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_P_KEYBOARD_EC_STUCK_KEY (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+\r
+//\r
+// Peripheral Class Mouse Subclass Error Code definitions.\r
+//\r
+#define EFI_P_MOUSE_EC_LOCKED (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+\r
+//\r
+// Peripheral Class Local Console Subclass Error Code definitions.\r
+//\r
+//\r
+// Peripheral Class Remote Console Subclass Error Code definitions.\r
+//\r
+//\r
+// Peripheral Class Serial Port Subclass Error Code definitions.\r
+//\r
+//\r
+// Peripheral Class Parallel Port Subclass Error Code definitions.\r
+//\r
+//\r
+// Peripheral Class Fixed Media Subclass Error Code definitions.\r
+//\r
+//\r
+// Peripheral Class Removable Media Subclass Error Code definitions.\r
+//\r
+//\r
+// Peripheral Class Audio Input Subclass Error Code definitions.\r
+//\r
+//\r
+// Peripheral Class Audio Output Subclass Error Code definitions.\r
+//\r
+//\r
+// Peripheral Class LCD Device Subclass Error Code definitions.\r
+//\r
+//\r
+// Peripheral Class Network Subclass Error Code definitions.\r
+//\r
+\r
+///////////////////////////////////////////////////////////////////////////////\r
+// Section 5\r
+///////////////////////////////////////////////////////////////////////////////\r
+//\r
+// IO Bus Subclass definitions.\r
+// Values of 14-127 are reserved for future use by this\r
+// specification.\r
+// Values of 128-255 are reserved for OEM use.\r
+//\r
+#define EFI_IO_BUS_UNSPECIFIED  (EFI_IO_BUS | 0x00000000)\r
+#define EFI_IO_BUS_PCI          (EFI_IO_BUS | 0x00010000)\r
+#define EFI_IO_BUS_USB          (EFI_IO_BUS | 0x00020000)\r
+#define EFI_IO_BUS_IBA          (EFI_IO_BUS | 0x00030000)\r
+#define EFI_IO_BUS_AGP          (EFI_IO_BUS | 0x00040000)\r
+#define EFI_IO_BUS_PC_CARD      (EFI_IO_BUS | 0x00050000)\r
+#define EFI_IO_BUS_LPC          (EFI_IO_BUS | 0x00060000)\r
+#define EFI_IO_BUS_SCSI         (EFI_IO_BUS | 0x00070000)\r
+#define EFI_IO_BUS_ATA_ATAPI    (EFI_IO_BUS | 0x00080000)\r
+#define EFI_IO_BUS_FC           (EFI_IO_BUS | 0x00090000)\r
+#define EFI_IO_BUS_IP_NETWORK   (EFI_IO_BUS | 0x000A0000)\r
+#define EFI_IO_BUS_SMBUS        (EFI_IO_BUS | 0x000B0000)\r
+#define EFI_IO_BUS_I2C          (EFI_IO_BUS | 0x000C0000)\r
+\r
+//\r
+// IO Bus Class Progress Code definitions.\r
+// These are shared by all subclasses.\r
+//\r
+#define EFI_IOB_PC_INIT     0x00000000\r
+#define EFI_IOB_PC_RESET    0x00000001\r
+#define EFI_IOB_PC_DISABLE  0x00000002\r
+#define EFI_IOB_PC_DETECT   0x00000003\r
+#define EFI_IOB_PC_ENABLE   0x00000004\r
+#define EFI_IOB_PC_RECONFIG 0x00000005\r
+#define EFI_IOB_PC_HOTPLUG  0x00000006\r
+\r
+//\r
+// IO Bus Class Unspecified Subclass Progress Code definitions.\r
+//\r
+//\r
+// IO Bus Class PCI Subclass Progress Code definitions.\r
+//\r
+#define EFI_IOB_PCI_PC_BUS_ENUM   (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_IOB_PCI_PC_RES_ALLOC  (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_IOB_PCI_PC_HPC_INIT   (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+\r
+//\r
+// IO Bus Class USB Subclass Progress Code definitions.\r
+//\r
+//\r
+// IO Bus Class IBA Subclass Progress Code definitions.\r
+//\r
+//\r
+// IO Bus Class AGP Subclass Progress Code definitions.\r
+//\r
+//\r
+// IO Bus Class PC Card Subclass Progress Code definitions.\r
+//\r
+//\r
+// IO Bus Class LPC Subclass Progress Code definitions.\r
+//\r
+//\r
+// IO Bus Class SCSI Subclass Progress Code definitions.\r
+//\r
+//\r
+// IO Bus Class ATA/ATAPI Subclass Progress Code definitions.\r
+//\r
+#define EFI_IOB_ATA_BUS_SMART_ENABLE          (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_IOB_ATA_BUS_SMART_DISABLE         (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_IOB_ATA_BUS_SMART_OVERTHRESHOLD   (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+#define EFI_IOB_ATA_BUS_SMART_UNDERTHRESHOLD  (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
+\r
+//\r
+// IO Bus Class FC Subclass Progress Code definitions.\r
+//\r
+//\r
+// IO Bus Class IP Network Subclass Progress Code definitions.\r
+//\r
+//\r
+// IO Bus Class SMBUS Subclass Progress Code definitions.\r
+//\r
+//\r
+// IO Bus Class I2C Subclass Progress Code definitions.\r
+//\r
+//\r
+// IO Bus Class Error Code definitions.\r
+// These are shared by all subclasses.\r
+//\r
+#define EFI_IOB_EC_NON_SPECIFIC       0x00000000\r
+#define EFI_IOB_EC_DISABLED           0x00000001\r
+#define EFI_IOB_EC_NOT_SUPPORTED      0x00000002\r
+#define EFI_IOB_EC_NOT_DETECTED       0x00000003\r
+#define EFI_IOB_EC_NOT_CONFIGURED     0x00000004\r
+#define EFI_IOB_EC_INTERFACE_ERROR    0x00000005\r
+#define EFI_IOB_EC_CONTROLLER_ERROR   0x00000006\r
+#define EFI_IOB_EC_READ_ERROR         0x00000007\r
+#define EFI_IOB_EC_WRITE_ERROR        0x00000008\r
+#define EFI_IOB_EC_RESOURCE_CONFLICT  0x00000009\r
+\r
+//\r
+// IO Bus Class Unspecified Subclass Error Code definitions.\r
+//\r
+//\r
+// IO Bus Class PCI Subclass Error Code definitions.\r
+//\r
+#define EFI_IOB_PCI_EC_PERR (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_IOB_PCI_EC_SERR (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+\r
+//\r
+// IO Bus Class USB Subclass Error Code definitions.\r
+//\r
+//\r
+// IO Bus Class IBA Subclass Error Code definitions.\r
+//\r
+//\r
+// IO Bus Class AGP Subclass Error Code definitions.\r
+//\r
+//\r
+// IO Bus Class PC Card Subclass Error Code definitions.\r
+//\r
+//\r
+// IO Bus Class LPC Subclass Error Code definitions.\r
+//\r
+//\r
+// IO Bus Class SCSI Subclass Error Code definitions.\r
+//\r
+//\r
+// IO Bus Class ATA/ATAPI Subclass Error Code definitions.\r
+//\r
+#define EFI_IOB_ATA_BUS_SMART_NOTSUPPORTED  (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_IOB_ATA_BUS_SMART_DISABLED      (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+\r
+//\r
+// IO Bus Class FC Subclass Error Code definitions.\r
+//\r
+//\r
+// IO Bus Class IP Network Subclass Error Code definitions.\r
+//\r
+//\r
+// IO Bus Class SMBUS Subclass Error Code definitions.\r
+//\r
+//\r
+// IO Bus Class I2C Subclass Error Code definitions.\r
+//\r
+\r
+///////////////////////////////////////////////////////////////////////////////\r
+// Section 6\r
+///////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Software Subclass definitions.\r
+// Values of 14-127 are reserved for future use by this\r
+// specification.\r
+// Values of 128-255 are reserved for OEM use.\r
+//\r
+#define EFI_SOFTWARE_UNSPECIFIED          (EFI_SOFTWARE | 0x00000000)\r
+#define EFI_SOFTWARE_SEC                  (EFI_SOFTWARE | 0x00010000)\r
+#define EFI_SOFTWARE_PEI_CORE             (EFI_SOFTWARE | 0x00020000)\r
+#define EFI_SOFTWARE_PEI_MODULE           (EFI_SOFTWARE | 0x00030000)\r
+#define EFI_SOFTWARE_DXE_CORE             (EFI_SOFTWARE | 0x00040000)\r
+#define EFI_SOFTWARE_DXE_BS_DRIVER        (EFI_SOFTWARE | 0x00050000)\r
+#define EFI_SOFTWARE_DXE_RT_DRIVER        (EFI_SOFTWARE | 0x00060000)\r
+#define EFI_SOFTWARE_SMM_DRIVER           (EFI_SOFTWARE | 0x00070000)\r
+#define EFI_SOFTWARE_EFI_APPLICATION      (EFI_SOFTWARE | 0x00080000)\r
+#define EFI_SOFTWARE_EFI_OS_LOADER        (EFI_SOFTWARE | 0x00090000)\r
+#define EFI_SOFTWARE_RT                   (EFI_SOFTWARE | 0x000A0000)\r
+#define EFI_SOFTWARE_AL                   (EFI_SOFTWARE | 0x000B0000)\r
+#define EFI_SOFTWARE_EBC_EXCEPTION        (EFI_SOFTWARE | 0x000C0000)\r
+#define EFI_SOFTWARE_IA32_EXCEPTION       (EFI_SOFTWARE | 0x000D0000)\r
+#define EFI_SOFTWARE_IPF_EXCEPTION        (EFI_SOFTWARE | 0x000E0000)\r
+#define EFI_SOFTWARE_PEI_SERVICE          (EFI_SOFTWARE | 0x000F0000)\r
+#define EFI_SOFTWARE_EFI_BOOT_SERVICE     (EFI_SOFTWARE | 0x00100000)\r
+#define EFI_SOFTWARE_EFI_RUNTIME_SERVICE  (EFI_SOFTWARE | 0x00110000)\r
+#define EFI_SOFTWARE_EFI_DXE_SERVICE      (EFI_SOFTWARE | 0x00120000)\r
+#define EFI_SOFTWARE_X64_EXCEPTION        (EFI_SOFTWARE | 0x00130000)\r
+\r
+//\r
+// Software Class Progress Code definitions.\r
+// These are shared by all subclasses.\r
+//\r
+#define EFI_SW_PC_INIT                0x00000000\r
+#define EFI_SW_PC_LOAD                0x00000001\r
+#define EFI_SW_PC_INIT_BEGIN          0x00000002\r
+#define EFI_SW_PC_INIT_END            0x00000003\r
+#define EFI_SW_PC_AUTHENTICATE_BEGIN  0x00000004\r
+#define EFI_SW_PC_AUTHENTICATE_END    0x00000005\r
+#define EFI_SW_PC_INPUT_WAIT          0x00000006\r
+#define EFI_SW_PC_USER_SETUP          0x00000007\r
+\r
+//\r
+// Software Class Unspecified Subclass Progress Code definitions.\r
+//\r
+//\r
+// Software Class SEC Subclass Progress Code definitions.\r
+//\r
+#define EFI_SW_SEC_PC_ENTRY_POINT     (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_SW_SEC_PC_HANDOFF_TO_NEXT (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+\r
+//\r
+// Software Class PEI Core Subclass Progress Code definitions.\r
+//\r
+#define EFI_SW_PEI_CORE_PC_ENTRY_POINT      (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_SW_PEI_CORE_PC_HANDOFF_TO_NEXT  (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_SW_PEI_CORE_PC_RETURN_TO_LAST   (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+\r
+//\r
+// Software Class PEI Module Subclass Progress Code definitions.\r
+//\r
+#define EFI_SW_PEIM_PC_RECOVERY_BEGIN (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_SW_PEIM_PC_CAPSULE_LOAD   (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_SW_PEIM_PC_CAPSULE_START  (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+#define EFI_SW_PEIM_PC_RECOVERY_USER  (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
+#define EFI_SW_PEIM_PC_RECOVERY_AUTO  (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
+\r
+//\r
+// Software Class DXE Core Subclass Progress Code definitions.\r
+//\r
+#define EFI_SW_DXE_CORE_PC_ENTRY_POINT      (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_SW_DXE_CORE_PC_HANDOFF_TO_NEXT  (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_SW_DXE_CORE_PC_RETURN_TO_LAST   (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+#define EFI_SW_DXE_CORE_PC_START_DRIVER     (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
+\r
+//\r
+// Software Class DXE BS Driver Subclass Progress Code definitions.\r
+//\r
+#define EFI_SW_DXE_BS_PC_LEGACY_OPROM_INIT            (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_SW_DXE_BS_PC_READY_TO_BOOT_EVENT          (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_SW_DXE_BS_PC_LEGACY_BOOT_EVENT            (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+#define EFI_SW_DXE_BS_PC_EXIT_BOOT_SERVICES_EVENT     (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
+#define EFI_SW_DXE_BS_PC_VIRTUAL_ADDRESS_CHANGE_EVENT (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
+#define EFI_SW_DXE_BS_PC_BEGIN_CONNECTING_DRIVERS     (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
+#define EFI_SW_DXE_BS_PC_VERIFYING_PASSWORD           (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
+\r
+//\r
+// Software Class DXE RT Driver Subclass Progress Code definitions.\r
+//\r
+#define EFI_SW_DXE_RT_PC_S0 (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_SW_DXE_RT_PC_S1 (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_SW_DXE_RT_PC_S2 (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+#define EFI_SW_DXE_RT_PC_S3 (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
+#define EFI_SW_DXE_RT_PC_S4 (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
+#define EFI_SW_DXE_RT_PC_S5 (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
+\r
+//\r
+// Software Class SMM Driver Subclass Progress Code definitions.\r
+//\r
+//\r
+// Software Class EFI Application Subclass Progress Code definitions.\r
+//\r
+//\r
+// Software Class EFI OS Loader Subclass Progress Code definitions.\r
+//\r
+//\r
+// Software Class EFI RT Subclass Progress Code definitions.\r
+//\r
+#define EFI_SW_RT_PC_ENTRY_POINT      (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_SW_RT_PC_HANDOFF_TO_NEXT  (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_SW_RT_PC_RETURN_TO_LAST   (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+\r
+//\r
+// Software Class EFI AL Subclass Progress Code definitions.\r
+//\r
+#define EFI_SW_AL_PC_ENTRY_POINT    (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_SW_AL_PC_RETURN_TO_LAST (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+\r
+//\r
+// Software Class EBC Exception Subclass Progress Code definitions.\r
+//\r
+//\r
+// Software Class IA32 Exception Subclass Progress Code definitions.\r
+//\r
+//\r
+// Software Class X64 Exception Subclass Progress Code definitions.\r
+//\r
+//\r
+// Software Class IPF Exception Subclass Progress Code definitions.\r
+//\r
+//\r
+// Software Class PEI Services Subclass Progress Code definitions.\r
+//\r
+#define EFI_SW_PS_PC_INSTALL_PPI            (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_SW_PS_PC_REINSTALL_PPI          (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_SW_PS_PC_LOCATE_PPI             (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+#define EFI_SW_PS_PC_NOTIFY_PPI             (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
+#define EFI_SW_PS_PC_GET_BOOT_MODE          (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
+#define EFI_SW_PS_PC_SET_BOOT_MODE          (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
+#define EFI_SW_PS_PC_GET_HOB_LIST           (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
+#define EFI_SW_PS_PC_CREATE_HOB             (EFI_SUBCLASS_SPECIFIC | 0x00000007)\r
+#define EFI_SW_PS_PC_FFS_FIND_NEXT_VOLUME   (EFI_SUBCLASS_SPECIFIC | 0x00000008)\r
+#define EFI_SW_PS_PC_FFS_FIND_NEXT_FILE     (EFI_SUBCLASS_SPECIFIC | 0x00000009)\r
+#define EFI_SW_PS_PC_FFS_FIND_SECTION_DATA  (EFI_SUBCLASS_SPECIFIC | 0x0000000A)\r
+#define EFI_SW_PS_PC_INSTALL_PEI_MEMORY     (EFI_SUBCLASS_SPECIFIC | 0x0000000B)\r
+#define EFI_SW_PS_PC_ALLOCATE_PAGES         (EFI_SUBCLASS_SPECIFIC | 0x0000000C)\r
+#define EFI_SW_PS_PC_ALLOCATE_POOL          (EFI_SUBCLASS_SPECIFIC | 0x0000000D)\r
+#define EFI_SW_PS_PC_COPY_MEM               (EFI_SUBCLASS_SPECIFIC | 0x0000000E)\r
+#define EFI_SW_PS_PC_SET_MEM                (EFI_SUBCLASS_SPECIFIC | 0x0000000F)\r
+\r
+//\r
+// Software Class EFI Boot Services Subclass Progress Code definitions.\r
+//\r
+#define EFI_SW_BS_PC_RAISE_TPL                      (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_SW_BS_PC_RESTORE_TPL                    (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_SW_BS_PC_ALLOCATE_PAGES                 (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+#define EFI_SW_BS_PC_FREE_PAGES                     (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
+#define EFI_SW_BS_PC_GET_MEMORY_MAP                 (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
+#define EFI_SW_BS_PC_ALLOCATE_POOL                  (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
+#define EFI_SW_BS_PC_FREE_POOL                      (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
+#define EFI_SW_BS_PC_CREATE_EVENT                   (EFI_SUBCLASS_SPECIFIC | 0x00000007)\r
+#define EFI_SW_BS_PC_SET_TIMER                      (EFI_SUBCLASS_SPECIFIC | 0x00000008)\r
+#define EFI_SW_BS_PC_WAIT_FOR_EVENT                 (EFI_SUBCLASS_SPECIFIC | 0x00000009)\r
+#define EFI_SW_BS_PC_SIGNAL_EVENT                   (EFI_SUBCLASS_SPECIFIC | 0x0000000A)\r
+#define EFI_SW_BS_PC_CLOSE_EVENT                    (EFI_SUBCLASS_SPECIFIC | 0x0000000B)\r
+#define EFI_SW_BS_PC_CHECK_EVENT                    (EFI_SUBCLASS_SPECIFIC | 0x0000000C)\r
+#define EFI_SW_BS_PC_INSTALL_PROTOCOL_INTERFACE     (EFI_SUBCLASS_SPECIFIC | 0x0000000D)\r
+#define EFI_SW_BS_PC_REINSTALL_PROTOCOL_INTERFACE   (EFI_SUBCLASS_SPECIFIC | 0x0000000E)\r
+#define EFI_SW_BS_PC_UNINSTALL_PROTOCOL_INTERFACE   (EFI_SUBCLASS_SPECIFIC | 0x0000000F)\r
+#define EFI_SW_BS_PC_HANDLE_PROTOCOL                (EFI_SUBCLASS_SPECIFIC | 0x00000010)\r
+#define EFI_SW_BS_PC_PC_HANDLE_PROTOCOL             (EFI_SUBCLASS_SPECIFIC | 0x00000011)\r
+#define EFI_SW_BS_PC_REGISTER_PROTOCOL_NOTIFY       (EFI_SUBCLASS_SPECIFIC | 0x00000012)\r
+#define EFI_SW_BS_PC_LOCATE_HANDLE                  (EFI_SUBCLASS_SPECIFIC | 0x00000013)\r
+#define EFI_SW_BS_PC_INSTALL_CONFIGURATION_TABLE    (EFI_SUBCLASS_SPECIFIC | 0x00000014)\r
+#define EFI_SW_BS_PC_LOAD_IMAGE                     (EFI_SUBCLASS_SPECIFIC | 0x00000015)\r
+#define EFI_SW_BS_PC_START_IMAGE                    (EFI_SUBCLASS_SPECIFIC | 0x00000016)\r
+#define EFI_SW_BS_PC_EXIT                           (EFI_SUBCLASS_SPECIFIC | 0x00000017)\r
+#define EFI_SW_BS_PC_UNLOAD_IMAGE                   (EFI_SUBCLASS_SPECIFIC | 0x00000018)\r
+#define EFI_SW_BS_PC_EXIT_BOOT_SERVICES             (EFI_SUBCLASS_SPECIFIC | 0x00000019)\r
+#define EFI_SW_BS_PC_GET_NEXT_MONOTONIC_COUNT       (EFI_SUBCLASS_SPECIFIC | 0x0000001A)\r
+#define EFI_SW_BS_PC_STALL                          (EFI_SUBCLASS_SPECIFIC | 0x0000001B)\r
+#define EFI_SW_BS_PC_SET_WATCHDOG_TIMER             (EFI_SUBCLASS_SPECIFIC | 0x0000001C)\r
+#define EFI_SW_BS_PC_CONNECT_CONTROLLER             (EFI_SUBCLASS_SPECIFIC | 0x0000001D)\r
+#define EFI_SW_BS_PC_DISCONNECT_CONTROLLER          (EFI_SUBCLASS_SPECIFIC | 0x0000001E)\r
+#define EFI_SW_BS_PC_OPEN_PROTOCOL                  (EFI_SUBCLASS_SPECIFIC | 0x0000001F)\r
+#define EFI_SW_BS_PC_CLOSE_PROTOCOL                 (EFI_SUBCLASS_SPECIFIC | 0x00000020)\r
+#define EFI_SW_BS_PC_OPEN_PROTOCOL_INFORMATION      (EFI_SUBCLASS_SPECIFIC | 0x00000021)\r
+#define EFI_SW_BS_PC_PROTOCOLS_PER_HANDLE           (EFI_SUBCLASS_SPECIFIC | 0x00000022)\r
+#define EFI_SW_BS_PC_LOCATE_HANDLE_BUFFER           (EFI_SUBCLASS_SPECIFIC | 0x00000023)\r
+#define EFI_SW_BS_PC_LOCATE_PROTOCOL                (EFI_SUBCLASS_SPECIFIC | 0x00000024)\r
+#define EFI_SW_BS_PC_INSTALL_MULTIPLE_INTERFACES    (EFI_SUBCLASS_SPECIFIC | 0x00000025)\r
+#define EFI_SW_BS_PC_UNINSTALL_MULTIPLE_INTERFACES  (EFI_SUBCLASS_SPECIFIC | 0x00000026)\r
+#define EFI_SW_BS_PC_CALCULATE_CRC_32               (EFI_SUBCLASS_SPECIFIC | 0x00000027)\r
+#define EFI_SW_BS_PC_COPY_MEM                       (EFI_SUBCLASS_SPECIFIC | 0x00000028)\r
+#define EFI_SW_BS_PC_SET_MEM                        (EFI_SUBCLASS_SPECIFIC | 0x00000029)\r
+\r
+//\r
+// Software Class EFI Runtime Services Subclass Progress Code definitions.\r
+//\r
+#define EFI_SW_RS_PC_GET_TIME                       (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_SW_RS_PC_SET_TIME                       (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_SW_RS_PC_GET_WAKEUP_TIME                (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+#define EFI_SW_RS_PC_SET_WAKEUP_TIME                (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
+#define EFI_SW_RS_PC_SET_VIRTUAL_ADDRESS_MAP        (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
+#define EFI_SW_RS_PC_CONVERT_POINTER                (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
+#define EFI_SW_RS_PC_GET_VARIABLE                   (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
+#define EFI_SW_RS_PC_GET_NEXT_VARIABLE_NAME         (EFI_SUBCLASS_SPECIFIC | 0x00000007)\r
+#define EFI_SW_RS_PC_SET_VARIABLE                   (EFI_SUBCLASS_SPECIFIC | 0x00000008)\r
+#define EFI_SW_RS_PC_GET_NEXT_HIGH_MONOTONIC_COUNT  (EFI_SUBCLASS_SPECIFIC | 0x00000009)\r
+#define EFI_SW_RS_PC_RESET_SYSTEM                   (EFI_SUBCLASS_SPECIFIC | 0x0000000A)\r
+\r
+//\r
+// Software Class EFI DXE Services Subclass Progress Code definitions\r
+//\r
+#define EFI_SW_DS_PC_ADD_MEMORY_SPACE             (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_SW_DS_PC_ALLOCATE_MEMORY_SPACE        (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+#define EFI_SW_DS_PC_FREE_MEMORY_SPACE            (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
+#define EFI_SW_DS_PC_REMOVE_MEMORY_SPACE          (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
+#define EFI_SW_DS_PC_GET_MEMORY_SPACE_DESCRIPTOR  (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
+#define EFI_SW_DS_PC_SET_MEMORY_SPACE_ATTRIBUTES  (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
+#define EFI_SW_DS_PC_GET_MEMORY_SPACE_MAP         (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
+#define EFI_SW_DS_PC_ADD_IO_SPACE                 (EFI_SUBCLASS_SPECIFIC | 0x00000007)\r
+#define EFI_SW_DS_PC_ALLOCATE_IO_SPACE            (EFI_SUBCLASS_SPECIFIC | 0x00000008)\r
+#define EFI_SW_DS_PC_FREE_IO_SPACE                (EFI_SUBCLASS_SPECIFIC | 0x00000009)\r
+#define EFI_SW_DS_PC_REMOVE_IO_SPACE              (EFI_SUBCLASS_SPECIFIC | 0x0000000A)\r
+#define EFI_SW_DS_PC_GET_IO_SPACE_DESCRIPTOR      (EFI_SUBCLASS_SPECIFIC | 0x0000000B)\r
+#define EFI_SW_DS_PC_GET_IO_SPACE_MAP             (EFI_SUBCLASS_SPECIFIC | 0x0000000C)\r
+#define EFI_SW_DS_PC_DISPATCH                     (EFI_SUBCLASS_SPECIFIC | 0x0000000D)\r
+#define EFI_SW_DS_PC_SCHEDULE                     (EFI_SUBCLASS_SPECIFIC | 0x0000000E)\r
+#define EFI_SW_DS_PC_TRUST                        (EFI_SUBCLASS_SPECIFIC | 0x0000000F)\r
+#define EFI_SW_DS_PC_PROCESS_FIRMWARE_VOLUME      (EFI_SUBCLASS_SPECIFIC | 0x00000010)\r
+\r
+//\r
+// Software Class Error Code definitions.\r
+// These are shared by all subclasses.\r
+//\r
+#define EFI_SW_EC_NON_SPECIFIC            0x00000000\r
+#define EFI_SW_EC_LOAD_ERROR              0x00000001\r
+#define EFI_SW_EC_INVALID_PARAMETER       0x00000002\r
+#define EFI_SW_EC_UNSUPPORTED             0x00000003\r
+#define EFI_SW_EC_INVALID_BUFFER          0x00000004\r
+#define EFI_SW_EC_OUT_OF_RESOURCES        0x00000005\r
+#define EFI_SW_EC_ABORTED                 0x00000006\r
+#define EFI_SW_EC_ILLEGAL_SOFTWARE_STATE  0x00000007\r
+#define EFI_SW_EC_ILLEGAL_HARDWARE_STATE  0x00000008\r
+#define EFI_SW_EC_START_ERROR             0x00000009\r
+#define EFI_SW_EC_BAD_DATE_TIME           0x0000000A\r
+#define EFI_SW_EC_CFG_INVALID             0x0000000B\r
+#define EFI_SW_EC_CFG_CLR_REQUEST         0x0000000C\r
+#define EFI_SW_EC_CFG_DEFAULT             0x0000000D\r
+#define EFI_SW_EC_PWD_INVALID             0x0000000E\r
+#define EFI_SW_EC_PWD_CLR_REQUEST         0x0000000F\r
+#define EFI_SW_EC_PWD_CLEARED             0x00000010\r
+#define EFI_SW_EC_EVENT_LOG_FULL          0x00000011\r
+\r
+//\r
+// Software Class Unspecified Subclass Error Code definitions.\r
+//\r
+//\r
+// Software Class SEC Subclass Error Code definitions.\r
+//\r
+//\r
+// Software Class PEI Core Subclass Error Code definitions.\r
+//\r
+#define EFI_SW_PEI_CORE_EC_DXE_CORRUPT  (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+\r
+//\r
+// Software Class PEI Module Subclass Error Code definitions.\r
+//\r
+#define EFI_SW_PEIM_EC_NO_RECOVERY_CAPSULE        (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+#define EFI_SW_PEIM_EC_INVALID_CAPSULE_DESCRIPTOR (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
+\r
+//\r
+// Software Class DXE Core Subclass Error Code definitions.\r
+//\r
+#define EFI_SW_CSM_LEGACY_ROM_INIT  (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+//\r
+// Software Class DXE Boot Service Driver Subclass Error Code definitions.\r
+//\r
+#define EFI_SW_DXE_BS_EC_LEGACY_OPROM_NO_SPACE  (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
+\r
+//\r
+// Software Class DXE Runtime Service Driver Subclass Error Code definitions.\r
+//\r
+//\r
+// Software Class SMM Driver Subclass Error Code definitions.\r
+//\r
+//\r
+// Software Class EFI Application Subclass Error Code definitions.\r
+//\r
+//\r
+// Software Class EFI OS Loader Subclass Error Code definitions.\r
+//\r
+//\r
+// Software Class EFI RT Subclass Error Code definitions.\r
+//\r
+//\r
+// Software Class EFI AL Subclass Error Code definitions.\r
+//\r
+//\r
+// Software Class EBC Exception Subclass Error Code definitions.\r
+// These exceptions are derived from the debug protocol definitions in the EFI\r
+// specification.\r
+//\r
+#define EFI_SW_EC_EBC_UNDEFINED             (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_UNDEFINED)\r
+#define EFI_SW_EC_EBC_DIVIDE_ERROR          (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_DIVIDE_ERROR)\r
+#define EFI_SW_EC_EBC_DEBUG                 (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_DEBUG)\r
+#define EFI_SW_EC_EBC_BREAKPOINT            (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_BREAKPOINT)\r
+#define EFI_SW_EC_EBC_OVERFLOW              (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_OVERFLOW)\r
+#define EFI_SW_EC_EBC_INVALID_OPCODE        (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_INVALID_OPCODE)\r
+#define EFI_SW_EC_EBC_STACK_FAULT           (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_STACK_FAULT)\r
+#define EFI_SW_EC_EBC_ALIGNMENT_CHECK       (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_ALIGNMENT_CHECK)\r
+#define EFI_SW_EC_EBC_INSTRUCTION_ENCODING  (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_INSTRUCTION_ENCODING)\r
+#define EFI_SW_EC_EBC_BAD_BREAK             (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_BAD_BREAK)\r
+#define EFI_SW_EC_EBC_STEP                  (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_STEP)\r
+\r
+//\r
+// Software Class IA32 Exception Subclass Error Code definitions.\r
+// These exceptions are derived from the debug protocol definitions in the EFI\r
+// specification.\r
+//\r
+#define EFI_SW_EC_IA32_DIVIDE_ERROR     (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_DIVIDE_ERROR)\r
+#define EFI_SW_EC_IA32_DEBUG            (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_DEBUG)\r
+#define EFI_SW_EC_IA32_NMI              (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_NMI)\r
+#define EFI_SW_EC_IA32_BREAKPOINT       (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_BREAKPOINT)\r
+#define EFI_SW_EC_IA32_OVERFLOW         (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_OVERFLOW)\r
+#define EFI_SW_EC_IA32_BOUND            (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_BOUND)\r
+#define EFI_SW_EC_IA32_INVALID_OPCODE   (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_INVALID_OPCODE)\r
+#define EFI_SW_EC_IA32_DOUBLE_FAULT     (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_DOUBLE_FAULT)\r
+#define EFI_SW_EC_IA32_INVALID_TSS      (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_INVALID_TSS)\r
+#define EFI_SW_EC_IA32_SEG_NOT_PRESENT  (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_SEG_NOT_PRESENT)\r
+#define EFI_SW_EC_IA32_STACK_FAULT      (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_STACK_FAULT)\r
+#define EFI_SW_EC_IA32_GP_FAULT         (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_GP_FAULT)\r
+#define EFI_SW_EC_IA32_PAGE_FAULT       (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_PAGE_FAULT)\r
+#define EFI_SW_EC_IA32_FP_ERROR         (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_FP_ERROR)\r
+#define EFI_SW_EC_IA32_ALIGNMENT_CHECK  (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_ALIGNMENT_CHECK)\r
+#define EFI_SW_EC_IA32_MACHINE_CHECK    (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_MACHINE_CHECK)\r
+#define EFI_SW_EC_IA32_SIMD             (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_SIMD)\r
+\r
+//\r
+// Software Class X64 Exception Subclass Error Code definitions.\r
+// These exceptions are derived from the debug protocol definitions in the EFI\r
+// specification.\r
+//\r
+#define EFI_SW_EC_X64_DIVIDE_ERROR      (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_DIVIDE_ERROR)\r
+#define EFI_SW_EC_X64_DEBUG             (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_DEBUG)\r
+#define EFI_SW_EC_X64_NMI               (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_NMI)\r
+#define EFI_SW_EC_X64_BREAKPOINT        (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_BREAKPOINT)\r
+#define EFI_SW_EC_X64_OVERFLOW          (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_OVERFLOW)\r
+#define EFI_SW_EC_X64_BOUND             (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_BOUND)\r
+#define EFI_SW_EC_X64_INVALID_OPCODE    (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_INVALID_OPCODE)\r
+#define EFI_SW_EC_X64_DOUBLE_FAULT      (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_DOUBLE_FAULT)\r
+#define EFI_SW_EC_X64_INVALID_TSS       (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_INVALID_TSS)\r
+#define EFI_SW_EC_X64_SEG_NOT_PRESENT   (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_SEG_NOT_PRESENT)\r
+#define EFI_SW_EC_X64_STACK_FAULT       (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_STACK_FAULT)\r
+#define EFI_SW_EC_X64_GP_FAULT          (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_GP_FAULT)\r
+#define EFI_SW_EC_X64_PAGE_FAULT        (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_PAGE_FAULT)\r
+#define EFI_SW_EC_X64_FP_ERROR          (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_FP_ERROR)\r
+#define EFI_SW_EC_X64_ALIGNMENT_CHECK   (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_ALIGNMENT_CHECK)\r
+#define EFI_SW_EC_X64_MACHINE_CHECK     (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_MACHINE_CHECK)\r
+#define EFI_SW_EC_X64_SIMD              (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_SIMD)\r
+\r
+//\r
+// Software Class IPF Exception Subclass Error Code definitions.\r
+// These exceptions are derived from the debug protocol definitions in the EFI\r
+// specification.\r
+//\r
+#define EFI_SW_EC_IPF_ALT_DTLB            (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_ALT_DTLB)\r
+#define EFI_SW_EC_IPF_DNESTED_TLB         (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_DNESTED_TLB)\r
+#define EFI_SW_EC_IPF_BREAKPOINT          (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_BREAKPOINT)\r
+#define EFI_SW_EC_IPF_EXTERNAL_INTERRUPT  (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_EXTERNAL_INTERRUPT)\r
+#define EFI_SW_EC_IPF_GEN_EXCEPT          (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_GEN_EXCEPT)\r
+#define EFI_SW_EC_IPF_NAT_CONSUMPTION     (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_NAT_CONSUMPTION)\r
+#define EFI_SW_EC_IPF_DEBUG_EXCEPT        (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_DEBUG_EXCEPT)\r
+#define EFI_SW_EC_IPF_UNALIGNED_ACCESS    (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_UNALIGNED_ACCESS)\r
+#define EFI_SW_EC_IPF_FP_FAULT            (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_FP_FAULT)\r
+#define EFI_SW_EC_IPF_FP_TRAP             (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_FP_TRAP)\r
+#define EFI_SW_EC_IPF_TAKEN_BRANCH        (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_TAKEN_BRANCH)\r
+#define EFI_SW_EC_IPF_SINGLE_STEP         (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_SINGLE_STEP)\r
+\r
+\r
+//\r
+// Software Class PEI Service Subclass Error Code definitions.\r
+//\r
+//\r
+// Software Class EFI Boot Service Subclass Error Code definitions.\r
+//\r
+//\r
+// Software Class EFI Runtime Service Subclass Error Code definitions.\r
+//\r
+//\r
+// Software Class EFI DXE Service Subclass Error Code definitions.\r
+//\r
+\r
+///////////////////////////////////////////////////////////////////////////////\r
+// Section 7\r
+///////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Debug Code definitions for all classes and subclass\r
+// Only one debug code is defined at this point and should\r
+// be used for anything that gets sent to debug stream.\r
+//\r
+#define EFI_DC_UNSPECIFIED  0x0\r
+\r
+#endif\r
diff --git a/IntelFrameworkPkg/Include/Framework/FrameworkStatusCodeDataTypeId.h b/IntelFrameworkPkg/Include/Framework/FrameworkStatusCodeDataTypeId.h
new file mode 100644 (file)
index 0000000..92c222a
--- /dev/null
@@ -0,0 +1,433 @@
+/** @file\r
+  This file defines the data structures to support Status Code Data.\r
+\r
+  Copyright (c) 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
+  Module Name:  FrameworkStatusCodeDataTypeId.h\r
+\r
+  @par Revision Reference:\r
+  These definitions are from Framework of EFI Status Code Spec\r
+  Version 0.92.\r
+\r
+**/\r
+\r
+#ifndef __FRAMEWORK_STATUS_CODE_DATA_TYPE_ID_H__\r
+#define __FRAMEWORK_STATUS_CODE_DATA_TYPE_ID_H__\r
+\r
+#include <Common/DataHubRecords.h>\r
+#include <Protocol/DebugSupport.h>\r
+\r
+///\r
+/// The size of string\r
+///\r
+#define EFI_STATUS_CODE_DATA_MAX_STRING_SIZE  150\r
+\r
+///\r
+/// This is the max data size including all the headers which can be passed\r
+/// as Status Code data. This data should be multiple of 8 byte\r
+/// to avoid any kind of boundary issue. Also, sum of this data size (inclusive\r
+/// of size of EFI_STATUS_CODE_DATA should not exceed the max record size of\r
+/// data hub\r
+///\r
+#define EFI_STATUS_CODE_DATA_MAX_SIZE 200\r
+\r
+#pragma pack(1)\r
+typedef enum {\r
+  EfiStringAscii,\r
+  EfiStringUnicode,\r
+  EfiStringToken\r
+} EFI_STRING_TYPE;\r
+\r
+typedef struct {\r
+  EFI_HII_HANDLE  Handle;\r
+  STRING_REF      Token;\r
+} EFI_STATUS_CODE_STRING_TOKEN;\r
+\r
+typedef union {\r
+  CHAR8                         *Ascii;\r
+  CHAR16                        *Unicode;\r
+  EFI_STATUS_CODE_STRING_TOKEN  Hii;\r
+} EFI_STATUS_CODE_STRING;\r
+\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA                          DataHeader;\r
+  EFI_STRING_TYPE                               StringType;\r
+  EFI_STATUS_CODE_STRING                        String;\r
+} EFI_STATUS_CODE_STRING_DATA;\r
+\r
+#pragma pack()\r
+\r
+#pragma pack(1)\r
+\r
+typedef struct {\r
+  UINT32  ErrorLevel;\r
+  //\r
+  // 12 * sizeof (UINT64) Var Arg stack\r
+  //\r
+  // ascii DEBUG () Format string\r
+  //\r
+} EFI_DEBUG_INFO;\r
+\r
+#pragma pack()\r
+\r
+//\r
+// declaration for EFI_EXP_DATA. This may change\r
+//\r
+// typedef UINTN   EFI_EXP_DATA;\r
+\r
+///\r
+/// Voltage Extended Error Data\r
+///\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA  DataHeader;\r
+  EFI_EXP_BASE10_DATA   Voltage;\r
+  EFI_EXP_BASE10_DATA   Threshold;\r
+} EFI_COMPUTING_UNIT_VOLTAGE_ERROR_DATA;\r
+\r
+typedef struct {\r
+  EFI_EXP_BASE10_DATA   Voltage;\r
+  EFI_EXP_BASE10_DATA   Threshold;\r
+} EFI_COMPUTING_UNIT_VOLTAGE_ERROR_DATA_PAYLOAD;\r
+\r
+///\r
+/// Microcode Update Extended Error Data\r
+///\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA  DataHeader;\r
+  UINT32                Version;\r
+} EFI_COMPUTING_UNIT_MICROCODE_UPDATE_ERROR_DATA;\r
+\r
+typedef struct {\r
+  UINT32                Version;\r
+} EFI_COMPUTING_UNIT_MICROCODE_UPDATE_ERROR_DATA_PAYLOAD;\r
+\r
+///\r
+/// Asynchronous Timer Extended Error Data\r
+///\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA  DataHeader;\r
+  EFI_EXP_BASE10_DATA   TimerLimit;\r
+} EFI_COMPUTING_UNIT_TIMER_EXPIRED_ERROR_DATA;\r
+\r
+typedef struct {\r
+  EFI_EXP_BASE10_DATA   TimerLimit;\r
+} EFI_COMPUTING_UNIT_TIMER_EXPIRED_ERROR_DATA_PAYLOAD;\r
+\r
+///\r
+/// Host Processor Mismatch Extended Error Data\r
+///\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA  DataHeader;\r
+  UINT32                Instance;\r
+  UINT16                Attributes;\r
+} EFI_HOST_PROCESSOR_MISMATCH_ERROR_DATA;\r
+\r
+typedef struct {\r
+  UINT32                Instance;\r
+  UINT16                Attributes;\r
+} EFI_HOST_PROCESSOR_MISMATCH_ERROR_DATA_PAYLOAD;\r
+\r
+//\r
+// EFI_COMPUTING_UNIT_MISMATCH_ATTRIBUTES\r
+// All other attributes are reserved for future use and\r
+// must be initialized to 0.\r
+//\r
+#define EFI_COMPUTING_UNIT_MISMATCH_SPEED       0x0001\r
+#define EFI_COMPUTING_UNIT_MISMATCH_FSB_SPEED   0x0002\r
+#define EFI_COMPUTING_UNIT_MISMATCH_FAMILY      0x0004\r
+#define EFI_COMPUTING_UNIT_MISMATCH_MODEL       0x0008\r
+#define EFI_COMPUTING_UNIT_MISMATCH_STEPPING    0x0010\r
+#define EFI_COMPUTING_UNIT_MISMATCH_CACHE_SIZE  0x0020\r
+#define EFI_COMPUTING_UNIT_MISMATCH_OEM1        0x1000\r
+#define EFI_COMPUTING_UNIT_MISMATCH_OEM2        0x2000\r
+#define EFI_COMPUTING_UNIT_MISMATCH_OEM3        0x4000\r
+#define EFI_COMPUTING_UNIT_MISMATCH_OEM4        0x8000\r
+\r
+///\r
+/// Thermal Extended Error Data\r
+///\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA  DataHeader;\r
+  EFI_EXP_BASE10_DATA   Temperature;\r
+  EFI_EXP_BASE10_DATA   Threshold;\r
+} EFI_COMPUTING_UNIT_THERMAL_ERROR_DATA;\r
+\r
+typedef struct {\r
+  EFI_EXP_BASE10_DATA   Temperature;\r
+  EFI_EXP_BASE10_DATA   Threshold;\r
+} EFI_COMPUTING_UNIT_THERMAL_ERROR_DATA_PAYLOAD;\r
+\r
+///\r
+/// Processor Disabled Extended Error Data\r
+///\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA  DataHeader;\r
+  UINT32                Cause;\r
+  BOOLEAN               SoftwareDisabled;\r
+} EFI_COMPUTING_UNIT_CPU_DISABLED_ERROR_DATA;\r
+\r
+typedef struct {\r
+  UINT32                Cause;\r
+  BOOLEAN               SoftwareDisabled;\r
+} EFI_COMPUTING_UNIT_CPU_DISABLED_ERROR_DATA_PAYLOAD;\r
+\r
+typedef enum {\r
+  EfiInitCacheDataOnly,\r
+  EfiInitCacheInstrOnly,\r
+  EfiInitCacheBoth,\r
+  EfiInitCacheUnspecified\r
+} EFI_INIT_CACHE_TYPE;\r
+\r
+///\r
+/// Embedded cache init extended data\r
+///\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA  DataHeader;\r
+  UINT32                Level;\r
+  EFI_INIT_CACHE_TYPE   Type;\r
+} EFI_CACHE_INIT_DATA;\r
+\r
+typedef struct {\r
+  UINT32                Level;\r
+  EFI_INIT_CACHE_TYPE   Type;\r
+} EFI_CACHE_INIT_DATA_PAYLOAD;\r
+\r
+//\r
+// Memory Extended Error Data\r
+//\r
+\r
+///\r
+/// Memory Error Granularity Definition\r
+///\r
+typedef UINT8 EFI_MEMORY_ERROR_GRANULARITY;\r
+\r
+///\r
+/// Memory Error Operation Definition\r
+///\r
+typedef UINT8 EFI_MEMORY_ERROR_OPERATION;\r
+\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA          DataHeader;\r
+  EFI_MEMORY_ERROR_GRANULARITY  Granularity;\r
+  EFI_MEMORY_ERROR_OPERATION    Operation;\r
+  UINTN                         Syndrome;\r
+  EFI_PHYSICAL_ADDRESS          Address;\r
+  UINTN                         Resolution;\r
+} EFI_MEMORY_EXTENDED_ERROR_DATA;\r
+\r
+typedef struct {\r
+  EFI_MEMORY_ERROR_GRANULARITY  Granularity;\r
+  EFI_MEMORY_ERROR_OPERATION    Operation;\r
+  UINTN                         Syndrome;\r
+  EFI_PHYSICAL_ADDRESS          Address;\r
+  UINTN                         Resolution;\r
+} EFI_MEMORY_EXTENDED_ERROR_DATA_PAYLOAD;\r
+\r
+//\r
+// Memory Error Granularities\r
+//\r
+#define EFI_MEMORY_ERROR_OTHER      0x01\r
+#define EFI_MEMORY_ERROR_UNKNOWN    0x02\r
+#define EFI_MEMORY_ERROR_DEVICE     0x03\r
+#define EFI_MEMORY_ERROR_PARTITION  0x04\r
+\r
+//\r
+// Memory Error Operations\r
+//\r
+#define EFI_MEMORY_OPERATION_OTHER          0x01\r
+#define EFI_MEMORY_OPERATION_UNKNOWN        0x02\r
+#define EFI_MEMORY_OPERATION_READ           0x03\r
+#define EFI_MEMORY_OPERATION_WRITE          0x04\r
+#define EFI_MEMORY_OPERATION_PARTIAL_WRITE  0x05\r
+\r
+//\r
+// Define shorthands to describe Group Operations\r
+// Many memory init operations are essentially group\r
+// operations.\r
+\r
+/// A shorthand to describe that the operation is performed\r
+/// on multiple devices within the array\r
+///\r
+#define EFI_MULTIPLE_MEMORY_DEVICE_OPERATION  0xfffe\r
+///\r
+/// A shorthand to describe that the operation is performed on all devices within the array\r
+///\r
+#define EFI_ALL_MEMORY_DEVICE_OPERATION 0xffff\r
+///\r
+/// A shorthand to describe that the operation is performed on multiple arrays\r
+///\r
+#define EFI_MULTIPLE_MEMORY_ARRAY_OPERATION 0xfffe\r
+///\r
+/// A shorthand to describe that the operation is performed on all the arrays\r
+///\r
+#define EFI_ALL_MEMORY_ARRAY_OPERATION  0xffff\r
+\r
+//\r
+// DIMM number\r
+//\r
+#pragma pack(1)\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA  DataHeader;\r
+  UINT16                Array;\r
+  UINT16                Device;\r
+} EFI_STATUS_CODE_DIMM_NUMBER;\r
+\r
+typedef struct {\r
+  UINT16                Array;\r
+  UINT16                Device;\r
+} EFI_STATUS_CODE_DIMM_NUMBER_PAYLOAD;\r
+#pragma pack()\r
+\r
+///\r
+/// Memory Module Mismatch Extended Error Data\r
+///\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA        DataHeader;\r
+  EFI_STATUS_CODE_DIMM_NUMBER Instance;\r
+} EFI_MEMORY_MODULE_MISMATCH_ERROR_DATA;\r
+\r
+typedef struct {\r
+  EFI_STATUS_CODE_DIMM_NUMBER Instance;\r
+} EFI_MEMORY_MODULE_MISMATCH_ERROR_DATA_PAYLOAD;\r
+\r
+///\r
+/// Memory Range Extended Data\r
+///\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA  DataHeader;\r
+  EFI_PHYSICAL_ADDRESS  Start;\r
+  EFI_PHYSICAL_ADDRESS  Length;\r
+} EFI_MEMORY_RANGE_EXTENDED_DATA;\r
+\r
+typedef struct {\r
+  EFI_PHYSICAL_ADDRESS  Start;\r
+  EFI_PHYSICAL_ADDRESS  Length;\r
+} EFI_MEMORY_RANGE_EXTENDED_DATA_PAYLOAD;\r
+\r
+///\r
+/// Device handle Extended Data. Used for many\r
+/// errors and progress codes to point to the device.\r
+///\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA  DataHeader;\r
+  EFI_HANDLE            Handle;\r
+} EFI_DEVICE_HANDLE_EXTENDED_DATA;\r
+\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA                 DataHeader;\r
+  UINT8                                *DevicePath;\r
+} EFI_DEVICE_PATH_EXTENDED_DATA;\r
+\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA           DataHeader;\r
+  EFI_HANDLE                     ControllerHandle;\r
+  EFI_HANDLE                     DriverBindingHandle;\r
+  UINT16                         DevicePathSize;\r
+  UINT8                          *RemainingDevicePath;\r
+} EFI_STATUS_CODE_START_EXTENDED_DATA;\r
+\r
+typedef struct {\r
+  EFI_HANDLE            Handle;\r
+} EFI_DEVICE_HANDLE_EXTENDED_DATA_PAYLOAD;\r
+\r
+typedef struct {\r
+  UINT8                                *DevicePath;\r
+} EFI_DEVICE_PATH_EXTENDED_DATA_PAYLOAD;\r
+\r
+typedef struct {\r
+  EFI_HANDLE                     ControllerHandle;\r
+  EFI_HANDLE                     DriverBindingHandle;\r
+  UINT16                         DevicePathSize;\r
+  UINT8                          *RemainingDevicePath;\r
+} EFI_STATUS_CODE_START_EXTENDED_DATA_PAYLOAD;\r
+\r
+///\r
+/// Resource Allocation Failure Extended Error Data\r
+///\r
+\r
+/*\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA      DataHeader;\r
+  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;\r
+  UINT32                    Bar;\r
+  VOID                      *ReqRes;\r
+  VOID                      *AllocRes;\r
+} EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA;\r
+*/\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA               DataHeader;\r
+  UINT32                             Bar;\r
+  UINT16                             DevicePathSize;\r
+  UINT16                             ReqResSize;\r
+  UINT16                             AllocResSize;\r
+  UINT8                              *DevicePath;\r
+  UINT8                              *ReqRes;\r
+  UINT8                              *AllocRes;\r
+} EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA;\r
+\r
+typedef struct {\r
+  UINT32                             Bar;\r
+  UINT16                             DevicePathSize;\r
+  UINT16                             ReqResSize;\r
+  UINT16                             AllocResSize;\r
+  UINT8                              *DevicePath;\r
+  UINT8                              *ReqRes;\r
+  UINT8                              *AllocRes;\r
+} EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA_PAYLOAD;\r
+\r
+///\r
+/// Extended Error Data for Assert\r
+///\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA        DataHeader;\r
+  UINT32                      LineNumber;\r
+  UINT32                      FileNameSize;\r
+  EFI_STATUS_CODE_STRING_DATA *FileName;\r
+} EFI_DEBUG_ASSERT_DATA;\r
+\r
+typedef struct {\r
+  UINT32                      LineNumber;\r
+  UINT32                      FileNameSize;\r
+  EFI_STATUS_CODE_STRING_DATA *FileName;\r
+} EFI_DEBUG_ASSERT_DATA_PAYLOAD;\r
+\r
+///\r
+/// System Context Data EBC/IA32/IPF\r
+///\r
+typedef union {\r
+  EFI_SYSTEM_CONTEXT_EBC  SystemContextEbc;\r
+  EFI_SYSTEM_CONTEXT_IA32 SystemContextIa32;\r
+  EFI_SYSTEM_CONTEXT_IPF  SystemContextIpf;\r
+} EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT;\r
+\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA                  DataHeader;\r
+  EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT  Context;\r
+} EFI_STATUS_CODE_EXCEP_EXTENDED_DATA;\r
+\r
+typedef struct {\r
+  EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT  Context;\r
+} EFI_STATUS_CODE_EXCEP_EXTENDED_DATA_PAYLOAD;\r
+\r
+///\r
+/// Legacy Oprom extended data\r
+///\r
+typedef struct {\r
+  EFI_STATUS_CODE_DATA  DataHeader;\r
+  EFI_HANDLE            DeviceHandle;\r
+  EFI_PHYSICAL_ADDRESS  RomImageBase;\r
+} EFI_LEGACY_OPROM_EXTENDED_DATA;\r
+\r
+typedef struct {\r
+  EFI_HANDLE            DeviceHandle;\r
+  EFI_PHYSICAL_ADDRESS  RomImageBase;\r
+} EFI_LEGACY_OPROM_EXTENDED_DATA_PAYLOAD;\r
+\r
+#endif\r
diff --git a/IntelFrameworkPkg/Include/Ppi/DeviceRecoveryModule.h b/IntelFrameworkPkg/Include/Ppi/DeviceRecoveryModule.h
new file mode 100644 (file)
index 0000000..7ed3217
--- /dev/null
@@ -0,0 +1,131 @@
+/** @file\r
+  This file declares Device Recovery Module PPI.\r
+\r
+  Copyright (c) 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
+  Module Name:  DeviceRecoveryModule.h\r
+\r
+  @par Revision Reference:\r
+  This PPI is defined in Framework of EFI Recovery spec.\r
+  Version 0.9\r
+\r
+**/\r
+\r
+#ifndef _PEI_DEVICE_RECOVERY_MODULE_PPI_H_\r
+#define _PEI_DEVICE_RECOVERY_MODULE_PPI_H_\r
+\r
+#include <PiPei.h>\r
+\r
+#define EFI_PEI_DEVICE_RECOVERY_MODULE_PPI_GUID \\r
+  { \\r
+    0x0DE2CE25, 0x446A, 0x45a7, {0xBF, 0xC9, 0x37, 0xDA, 0x26, 0x34, 0x4B, 0x37 } \\r
+  }\r
+\r
+typedef struct _EFI_PEI_DEVICE_RECOVERY_MODULE_PPI EFI_PEI_DEVICE_RECOVERY_MODULE_PPI;\r
+\r
+/**\r
+  This function, by whatever mechanism, searches for DXE capsules from the\r
+  associated device and returns the number and maximum size in bytes of\r
+  the capsules discovered. Entry 1 is assumed to be the highest load priority\r
+  and entry N is assumed to be the lowest priority.\r
+\r
+  @param  PeiServices            General-purpose services that are available to every PEIM\r
+  @param  This                   Indicates the EFI_PEI_DEVICE_RECOVERY_MODULE_PPI instance.\r
+  @param  NumberRecoveryCapsules Pointer to a caller-allocated UINTN. On output,\r
+                                 *NumberRecoveryCapsules contains the number of recovery capsule\r
+                                 images available for retrieval from this PEIM instance.\r
+\r
+  @retval EFI_SUCCESS           One or more capsules were discovered.\r
+  @retval EFI_DEVICE_ERROR      A device error occurred.\r
+  @retval EFI_NOT_FOUND         A recovery DXE capsule cannot be found.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_PEI_DEVICE_GET_NUMBER_RECOVERY_CAPSULE) (\r
+  IN EFI_PEI_SERVICES                               **PeiServices,\r
+  IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI             *This,\r
+  OUT UINTN                                         *NumberRecoveryCapsules\r
+  );\r
+\r
+/**\r
+  This function gets the size and type of the requested recovery capsule.\r
+\r
+  @param  PeiServices     General-purpose services that are available to every PEIM\r
+  @param  This            Indicates the EFI_PEI_DEVICE_RECOVERY_MODULE_PPI instance.\r
+  @param  CapsuleInstance Specifies for which capsule instance to retrieve the information.\r
+  @param  Size            A pointer to a caller-allocated UINTN in which the size of\r
+                          the requested recovery module is returned.\r
+  @param  CapsuleType     A pointer to a caller-allocated EFI_GUID in\r
+                          which the type of the requested recovery capsule is returned.\r
+\r
+  @retval EFI_SUCCESS           One or more capsules were discovered.\r
+  @retval EFI_DEVICE_ERROR      A device error occurred.\r
+  @retval EFI_NOT_FOUND         A recovery DXE capsule cannot be found.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_PEI_DEVICE_GET_RECOVERY_CAPSULE_INFO) (\r
+  IN  EFI_PEI_SERVICES                              **PeiServices,\r
+  IN  EFI_PEI_DEVICE_RECOVERY_MODULE_PPI            *This,\r
+  IN  UINTN                                         CapsuleInstance,\r
+  OUT UINTN                                         *Size,\r
+  OUT EFI_GUID                                      *CapsuleType\r
+  );\r
+\r
+/**\r
+  This function, by whatever mechanism, retrieves a DXE capsule from some device\r
+  and loads it into memory. Note that the published interface is device neutral.\r
+\r
+  @param  PeiServices     General-purpose services that are available to every PEIM\r
+  @param  This            Indicates the EFI_PEI_DEVICE_RECOVERY_MODULE_PPI instance.\r
+  @param  CapsuleInstance Specifies which capsule instance to retrieve.\r
+  @param  Buffer          Specifies a caller-allocated buffer in which the requested\r
+                          recovery capsule will be returned.\r
+\r
+  @retval EFI_SUCCESS           One or more capsules were discovered.\r
+  @retval EFI_DEVICE_ERROR      A device error occurred.\r
+  @retval EFI_NOT_FOUND         A recovery DXE capsule cannot be found.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_PEI_DEVICE_LOAD_RECOVERY_CAPSULE) (\r
+  IN OUT EFI_PEI_SERVICES                         **PeiServices,\r
+  IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI           *This,\r
+  IN UINTN                                        CapsuleInstance,\r
+  OUT VOID                                        *Buffer\r
+  );\r
+\r
+/**\r
+  @par Ppi Description:\r
+  Presents a standard interface to EFI_PEI_DEVICE_RECOVERY_MODULE_PPI,\r
+  regardless of the underlying device(s).\r
+\r
+  @param GetNumberRecoveryCapsules\r
+  Returns the number of DXE capsules that were found.\r
+\r
+  @param GetRecoveryCapsuleInfo\r
+  Returns the capsule image type and the size of a given image.\r
+\r
+  @param LoadRecoveryCapsule\r
+  Loads a DXE capsule into memory\r
+\r
+**/\r
+struct _EFI_PEI_DEVICE_RECOVERY_MODULE_PPI {\r
+  EFI_PEI_DEVICE_GET_NUMBER_RECOVERY_CAPSULE  GetNumberRecoveryCapsules;\r
+  EFI_PEI_DEVICE_GET_RECOVERY_CAPSULE_INFO    GetRecoveryCapsuleInfo;\r
+  EFI_PEI_DEVICE_LOAD_RECOVERY_CAPSULE        LoadRecoveryCapsule;\r
+};\r
+\r
+extern EFI_GUID gEfiPeiDeviceRecoveryModulePpiGuid;\r
+\r
+#endif\r