Header file for IDE Bus Driver.\r
\r
Copyright (c) 2006 - 2007 Intel Corporation. <BR>\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
+ 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
+ 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
**/\r
\r
//\r
// The package level header files this module uses\r
//\r
-#include <PiDxe.h>\r
-#include <Common/FrameworkStatusCode.h>\r
+#include <FrameworkDxe.h>\r
//\r
// The protocols, PPI and GUID defintions for this module\r
//\r
//\r
// The package level header files this module uses\r
//\r
-#include <PiDxe.h>\r
-#include <Common/FrameworkStatusCode.h>\r
-#include <Common/FrameworkStatusCodeDataTypeId.h>\r
+#include <FrameworkDxe.h>\r
+\r
//\r
// The protocols, PPI and GUID defintions for this module\r
//\r
//\r
// The package level header files this module uses\r
//\r
-#include <PiDxe.h>\r
-#include <Common/FrameworkStatusCode.h>\r
+#include <FrameworkDxe.h>\r
+\r
//\r
// The protocols, PPI and GUID defintions for this module\r
//\r
--- /dev/null
+/** @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 <Framework/StatusCode.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
--- /dev/null
+/** @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
--- /dev/null
+/** @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
+#include <FrameworkPei.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
--- /dev/null
+/** @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
+++ /dev/null
-/** @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
+++ /dev/null
-/** @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
+++ /dev/null
-/** @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
+++ /dev/null
-/** @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
+++ /dev/null
-/** @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
+++ /dev/null
-/** @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
+++ /dev/null
-/** @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
+++ /dev/null
-/** @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
+++ /dev/null
-/** @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
--- /dev/null
+/** @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
--- /dev/null
+/** @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
--- /dev/null
+/** @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 <Framework/DxeCis.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
--- /dev/null
+/** @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
--- /dev/null
+/** @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 <Framework/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
#define _FRAMEWORK_DXE_H_\r
\r
#include <FrameworkPei.h>\r
-#include <PiDxe.h>\r
-#include <Common/FrameworkDxeCis.h>\r
+\r
+#include <Framework/DxeCis.h>\r
\r
#endif\r
\r
#include <PiPei.h>\r
\r
-#include <Common/FrameworkFirmwareFileSystem.h>\r
-#include <Common/FrameworkFirmwareVolumeImageFormat.h>\r
-#include <Common/FrameworkFirmwareVolumeHeader.h>\r
-#include <Common/FrameworkHob.h>\r
-#include <Common/FrameworkLegacy16.h>\r
-#include <Common/DataHubRecords.h>\r
-#include <Common/FrameworkStatusCode.h>\r
-#include <Common/FrameworkStatusCodeDataTypeId.h>\r
+#include <Framework/FirmwareFileSystem.h>\r
+#include <Framework/FirmwareVolumeImageFormat.h>\r
+#include <Framework/FirmwareVolumeHeader.h>\r
+#include <Framework/Hob.h>\r
+#include <Framework/Legacy16.h>\r
+#include <Framework/DataHubRecords.h>\r
+#include <Framework/StatusCode.h>\r
+#include <Framework/StatusCodeDataTypeId.h>\r
\r
#endif\r
#define _FRAMEWORK_SMM_H_\r
\r
#include <FrameworkDxe.h>\r
-#include <Common/FrameworkSmmCis.h>\r
+\r
+#include <Framework/SmmCis.h>\r
\r
#endif\r
\r
**/\r
\r
-#ifndef _PEI_BOOT_SCRIPT_EXECUTER_PPI_H\r
-#define _PEI_BOOT_SCRIPT_EXECUTER_PPI_H\r
+#ifndef _PEI_BOOT_SCRIPT_EXECUTER_PPI_H_\r
+#define _PEI_BOOT_SCRIPT_EXECUTER_PPI_H_\r
+\r
+#include <FrameworkPei.h>\r
\r
#define EFI_ACPI_S3_RESUME_SCRIPT_TABLE 0x00\r
\r
/** @file\r
This file declares FindFv PPI used to locate FVs that contain PEIMs in PEI\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
+ 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
+ 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: FindFv.h\r
\r
\r
**/\r
\r
-#ifndef __FIND_FV_H__\r
-#define __FIND_FV_H__\r
+#ifndef _FIND_FV_H_\r
+#define _FIND_FV_H_\r
+\r
+#include <FrameworkPei.h>\r
\r
#define EFI_PEI_FIND_FV_PPI_GUID \\r
{ \\r
typedef struct _EFI_PEI_FIND_FV_PPI EFI_PEI_FIND_FV_PPI;\r
\r
/**\r
- This interface returns the base address of the firmware volume whose index \r
- was passed in FvNumber.Once this function reports a firmware volume \r
+ This interface returns the base address of the firmware volume whose index\r
+ was passed in FvNumber.Once this function reports a firmware volume\r
index/base address pair, that index/address pairing must continue throughout PEI.\r
\r
@param PeiServices Pointer to the PEI Services Table.\r
/**\r
@par Ppi Description:\r
Hardware mechanisms for locating FVs in a platform vary widely.\r
- EFI_PEI_FIND_FV_PPI serves to abstract this variation so that the \r
+ EFI_PEI_FIND_FV_PPI serves to abstract this variation so that the\r
PEI Foundation can remain standard across a wide variety of platforms.\r
\r
@param FindFv\r
//\r
// The package level header files this module uses\r
//\r
-#include <PiDxe.h>\r
+#include <FrameworkDxe.h>\r
#include <WinNtDxe.h>\r
+\r
//\r
// The protocols, PPI and GUID defintions for this module\r
//\r
#include <Protocol/Cpu.h>\r
#include <Protocol/DataHub.h>\r
#include <Protocol/HiiFramework.h>\r
-#include <Common/DataHubRecords.h>\r
#include <Guid/DataHubRecords.h>\r
#include <Protocol/CpuIo.h>\r
#include <Protocol/WinNtIo.h>\r