**/\r
\r
typedef struct {\r
- UINT32 Intel64ModeSupported :1; ///> bitfield\r
- UINT32 EptSupported :1; ///> bitfield\r
- UINT32 Reserved :30; ///> must be 0\r
+ UINT32 Intel64ModeSupported : 1; /// > bitfield\r
+ UINT32 EptSupported : 1; /// > bitfield\r
+ UINT32 Reserved : 30; /// > must be 0\r
} STM_FEAT;\r
\r
#define STM_SPEC_VERSION_MAJOR 1\r
#define STM_SPEC_VERSION_MINOR 0\r
\r
typedef struct {\r
- UINT8 StmSpecVerMajor;\r
- UINT8 StmSpecVerMinor;\r
+ UINT8 StmSpecVerMajor;\r
+ UINT8 StmSpecVerMinor;\r
///\r
/// Must be zero\r
///\r
- UINT16 Reserved;\r
- UINT32 StaticImageSize;\r
- UINT32 PerProcDynamicMemorySize;\r
- UINT32 AdditionalDynamicMemorySize;\r
- STM_FEAT StmFeatures;\r
- UINT32 NumberOfRevIDs;\r
- UINT32 StmSmmRevID[1];\r
+ UINT16 Reserved;\r
+ UINT32 StaticImageSize;\r
+ UINT32 PerProcDynamicMemorySize;\r
+ UINT32 AdditionalDynamicMemorySize;\r
+ STM_FEAT StmFeatures;\r
+ UINT32 NumberOfRevIDs;\r
+ UINT32 StmSmmRevID[1];\r
///\r
/// The total STM_HEADER should be 4K.\r
///\r
} SOFTWARE_STM_HEADER;\r
\r
typedef struct {\r
- MSEG_HEADER HwStmHdr;\r
- SOFTWARE_STM_HEADER SwStmHdr;\r
+ MSEG_HEADER HwStmHdr;\r
+ SOFTWARE_STM_HEADER SwStmHdr;\r
} STM_HEADER;\r
\r
-\r
/**\r
VMCALL API Numbers\r
API number convention: BIOS facing VMCALL interfaces have bit 16 clear\r
\r
@note All other registers unmodified.\r
**/\r
-#define STM_API_MAP_ADDRESS_RANGE 0x00000001\r
+#define STM_API_MAP_ADDRESS_RANGE 0x00000001\r
\r
/**\r
STM Map Address Range Descriptor for #STM_API_MAP_ADDRESS_RANGE VMCALL\r
**/\r
typedef struct {\r
- UINT64 PhysicalAddress;\r
- UINT64 VirtualAddress;\r
- UINT32 PageCount;\r
- UINT32 PatCacheType;\r
+ UINT64 PhysicalAddress;\r
+ UINT64 VirtualAddress;\r
+ UINT32 PageCount;\r
+ UINT32 PatCacheType;\r
} STM_MAP_ADDRESS_RANGE_DESCRIPTOR;\r
\r
/**\r
\r
@note All other registers unmodified.\r
**/\r
-#define STM_API_UNMAP_ADDRESS_RANGE 0x00000002\r
+#define STM_API_UNMAP_ADDRESS_RANGE 0x00000002\r
\r
/**\r
STM Unmap Address Range Descriptor for #STM_API_UNMAP_ADDRESS_RANGE VMCALL\r
**/\r
typedef struct {\r
- UINT64 VirtualAddress;\r
- UINT32 Length;\r
+ UINT64 VirtualAddress;\r
+ UINT32 Length;\r
} STM_UNMAP_ADDRESS_RANGE_DESCRIPTOR;\r
\r
-\r
/**\r
Since the normal OS environment runs with a different set of page tables than\r
the SMM guest, virtual mappings will certainly be different. In order to do a\r
\r
@note All other registers unmodified.\r
**/\r
-#define STM_API_ADDRESS_LOOKUP 0x00000003\r
+#define STM_API_ADDRESS_LOOKUP 0x00000003\r
\r
/**\r
STM Lookup Address Range Descriptor for #STM_API_ADDRESS_LOOKUP VMCALL\r
**/\r
typedef struct {\r
- UINT64 InterruptedGuestVirtualAddress;\r
- UINT32 Length;\r
- UINT64 InterruptedCr3;\r
- UINT64 InterruptedEptp;\r
- UINT32 MapToSmmGuest:2;\r
- UINT32 InterruptedCr4Pae:1;\r
- UINT32 InterruptedCr4Pse:1;\r
- UINT32 InterruptedIa32eMode:1;\r
- UINT32 Reserved1:27;\r
- UINT32 Reserved2;\r
- UINT64 PhysicalAddress;\r
- UINT64 SmmGuestVirtualAddress;\r
+ UINT64 InterruptedGuestVirtualAddress;\r
+ UINT32 Length;\r
+ UINT64 InterruptedCr3;\r
+ UINT64 InterruptedEptp;\r
+ UINT32 MapToSmmGuest : 2;\r
+ UINT32 InterruptedCr4Pae : 1;\r
+ UINT32 InterruptedCr4Pse : 1;\r
+ UINT32 InterruptedIa32eMode : 1;\r
+ UINT32 Reserved1 : 27;\r
+ UINT32 Reserved2;\r
+ UINT64 PhysicalAddress;\r
+ UINT64 SmmGuestVirtualAddress;\r
} STM_ADDRESS_LOOKUP_DESCRIPTOR;\r
\r
/**\r
#define STM_ADDRESS_LOOKUP_DESCRIPTOR_VIRTUAL_ADDRESS_SPECIFIED 3\r
/// @}\r
\r
-\r
/**\r
When returning from a protection exception (see section 6.2), the SMM guest\r
can instruct the STM to take one of two paths. It can either request a value\r
Values 0x10..0xFFFFFFFF are reserved, do not use.\r
\r
**/\r
-#define STM_API_RETURN_FROM_PROTECTION_EXCEPTION 0x00000004\r
-\r
+#define STM_API_RETURN_FROM_PROTECTION_EXCEPTION 0x00000004\r
\r
/**\r
VMCALL API Numbers\r
\r
@note All other registers unmodified.\r
**/\r
-#define STM_API_START (BIT16 | 1)\r
+#define STM_API_START (BIT16 | 1)\r
\r
/**\r
Bit values for EDX input parameter to #STM_API_START VMCALL\r
#define STM_CONFIG_SMI_UNBLOCKING_BY_VMX_OFF BIT0\r
/// @}\r
\r
-\r
/**\r
The StopStmVMCALL() is invoked by the MLE to teardown an active STM. This is\r
normally done as part of a full teardown of the SMX environment when the\r
\r
@note All other registers unmodified.\r
**/\r
-#define STM_API_STOP (BIT16 | 2)\r
-\r
+#define STM_API_STOP (BIT16 | 2)\r
\r
/**\r
The ProtectResourceVMCALL() is invoked by the MLE root to request protection\r
\r
@note All other registers unmodified.\r
**/\r
-#define STM_API_PROTECT_RESOURCE (BIT16 | 3)\r
-\r
+#define STM_API_PROTECT_RESOURCE (BIT16 | 3)\r
\r
/**\r
The UnProtectResourceVMCALL() is invoked by the MLE root to request that the\r
\r
@note All other registers unmodified.\r
**/\r
-#define STM_API_UNPROTECT_RESOURCE (BIT16 | 4)\r
-\r
+#define STM_API_UNPROTECT_RESOURCE (BIT16 | 4)\r
\r
/**\r
The GetBiosResourcesVMCALL() is invoked by the MLE root to request the list\r
\r
@note All other registers unmodified.\r
**/\r
-#define STM_API_GET_BIOS_RESOURCES (BIT16 | 5)\r
-\r
+#define STM_API_GET_BIOS_RESOURCES (BIT16 | 5)\r
\r
/**\r
The ManageVmcsDatabaseVMCALL() is invoked by the MLE root to add or remove an\r
\r
@note All other registers unmodified.\r
**/\r
-#define STM_API_MANAGE_VMCS_DATABASE (BIT16 | 6)\r
+#define STM_API_MANAGE_VMCS_DATABASE (BIT16 | 6)\r
\r
/**\r
STM VMCS Database Request for #STM_API_MANAGE_VMCS_DATABASE VMCALL\r
///\r
/// bits 11:0 are reserved and must be 0\r
///\r
- UINT64 VmcsPhysPointer;\r
- UINT32 DomainType :4;\r
- UINT32 XStatePolicy :2;\r
- UINT32 DegradationPolicy :4;\r
+ UINT64 VmcsPhysPointer;\r
+ UINT32 DomainType : 4;\r
+ UINT32 XStatePolicy : 2;\r
+ UINT32 DegradationPolicy : 4;\r
///\r
/// Must be 0\r
///\r
- UINT32 Reserved1 :22;\r
- UINT32 AddOrRemove;\r
+ UINT32 Reserved1 : 22;\r
+ UINT32 AddOrRemove;\r
} STM_VMCS_DATABASE_REQUEST;\r
\r
/**\r
#define STM_VMCS_DATABASE_REQUEST_REMOVE 0\r
/// @}\r
\r
-\r
/**\r
InitializeProtectionVMCALL() prepares the STM for setup of the initial\r
protection profile which is subsequently communicated via one or more\r
\r
@note All other registers unmodified.\r
**/\r
-#define STM_API_INITIALIZE_PROTECTION (BIT16 | 7)\r
+#define STM_API_INITIALIZE_PROTECTION (BIT16 | 7)\r
\r
/**\r
Byte granular support bits returned in EBX from #STM_API_INITIALIZE_PROTECTION\r
#define STM_RSC_MSR BIT3\r
/// @}\r
\r
-\r
/**\r
The ManageEventLogVMCALL() is invoked by the MLE root to control the logging\r
feature. It consists of several sub-functions to facilitate establishment of\r
\r
@note All other registers unmodified.\r
**/\r
-#define STM_API_MANAGE_EVENT_LOG (BIT16 | 8)\r
+#define STM_API_MANAGE_EVENT_LOG (BIT16 | 8)\r
\r
///\r
/// STM Event Log Management Request for #STM_API_MANAGE_EVENT_LOG VMCALL\r
///\r
typedef struct {\r
- UINT32 SubFunctionIndex;\r
+ UINT32 SubFunctionIndex;\r
union {\r
struct {\r
- UINT32 PageCount;\r
+ UINT32 PageCount;\r
//\r
// number of elements is PageCount\r
//\r
- UINT64 Pages[];\r
+ UINT64 Pages[];\r
} LogBuffer;\r
//\r
// bitmap of EVENT_TYPE\r
Log Entry Header\r
**/\r
typedef struct {\r
- UINT32 EventSerialNumber;\r
- UINT16 Type;\r
- UINT16 Lock :1;\r
- UINT16 Valid :1;\r
- UINT16 ReadByMle :1;\r
- UINT16 Wrapped :1;\r
- UINT16 Reserved :12;\r
+ UINT32 EventSerialNumber;\r
+ UINT16 Type;\r
+ UINT16 Lock : 1;\r
+ UINT16 Valid : 1;\r
+ UINT16 ReadByMle : 1;\r
+ UINT16 Wrapped : 1;\r
+ UINT16 Reserved : 12;\r
} LOG_ENTRY_HEADER;\r
\r
/**\r
} EVENT_TYPE;\r
\r
typedef struct {\r
- UINT32 Reserved;\r
+ UINT32 Reserved;\r
} ENTRY_EVT_LOG_STARTED;\r
\r
typedef struct {\r
- UINT32 Reserved;\r
+ UINT32 Reserved;\r
} ENTRY_EVT_LOG_STOPPED;\r
\r
typedef struct {\r
- UINT32 VmcallApiNumber;\r
+ UINT32 VmcallApiNumber;\r
} ENTRY_EVT_LOG_INVALID_PARAM;\r
\r
typedef struct {\r
- STM_RSC Resource;\r
+ STM_RSC Resource;\r
} ENTRY_EVT_LOG_HANDLED_PROTECTION_EXCEPTION;\r
\r
typedef struct {\r
- STM_RSC Resource;\r
+ STM_RSC Resource;\r
} ENTRY_EVT_BIOS_ACCESS_UNCLAIMED_RSC;\r
\r
typedef struct {\r
- STM_RSC Resource;\r
+ STM_RSC Resource;\r
} ENTRY_EVT_MLE_RSC_PROT_GRANTED;\r
\r
typedef struct {\r
- STM_RSC Resource;\r
+ STM_RSC Resource;\r
} ENTRY_EVT_MLE_RSC_PROT_DENIED;\r
\r
typedef struct {\r
- STM_RSC Resource;\r
+ STM_RSC Resource;\r
} ENTRY_EVT_MLE_RSC_UNPROT;\r
\r
typedef struct {\r
- STM_RSC Resource;\r
+ STM_RSC Resource;\r
} ENTRY_EVT_MLE_RSC_UNPROT_ERROR;\r
\r
typedef struct {\r
- UINT64 VmcsPhysPointer;\r
- UINT8 ExpectedDomainType;\r
- UINT8 DegradedDomainType;\r
+ UINT64 VmcsPhysPointer;\r
+ UINT8 ExpectedDomainType;\r
+ UINT8 DegradedDomainType;\r
} ENTRY_EVT_MLE_DOMAIN_TYPE_DEGRADED;\r
\r
typedef union {\r
- ENTRY_EVT_LOG_STARTED Started;\r
- ENTRY_EVT_LOG_STOPPED Stopped;\r
- ENTRY_EVT_LOG_INVALID_PARAM InvalidParam;\r
- ENTRY_EVT_LOG_HANDLED_PROTECTION_EXCEPTION HandledProtectionException;\r
- ENTRY_EVT_BIOS_ACCESS_UNCLAIMED_RSC BiosUnclaimedRsc;\r
- ENTRY_EVT_MLE_RSC_PROT_GRANTED MleRscProtGranted;\r
- ENTRY_EVT_MLE_RSC_PROT_DENIED MleRscProtDenied;\r
- ENTRY_EVT_MLE_RSC_UNPROT MleRscUnprot;\r
- ENTRY_EVT_MLE_RSC_UNPROT_ERROR MleRscUnprotError;\r
- ENTRY_EVT_MLE_DOMAIN_TYPE_DEGRADED MleDomainTypeDegraded;\r
+ ENTRY_EVT_LOG_STARTED Started;\r
+ ENTRY_EVT_LOG_STOPPED Stopped;\r
+ ENTRY_EVT_LOG_INVALID_PARAM InvalidParam;\r
+ ENTRY_EVT_LOG_HANDLED_PROTECTION_EXCEPTION HandledProtectionException;\r
+ ENTRY_EVT_BIOS_ACCESS_UNCLAIMED_RSC BiosUnclaimedRsc;\r
+ ENTRY_EVT_MLE_RSC_PROT_GRANTED MleRscProtGranted;\r
+ ENTRY_EVT_MLE_RSC_PROT_DENIED MleRscProtDenied;\r
+ ENTRY_EVT_MLE_RSC_UNPROT MleRscUnprot;\r
+ ENTRY_EVT_MLE_RSC_UNPROT_ERROR MleRscUnprotError;\r
+ ENTRY_EVT_MLE_DOMAIN_TYPE_DEGRADED MleDomainTypeDegraded;\r
} LOG_ENTRY_DATA;\r
\r
typedef struct {\r
- LOG_ENTRY_HEADER Hdr;\r
- LOG_ENTRY_DATA Data;\r
+ LOG_ENTRY_HEADER Hdr;\r
+ LOG_ENTRY_DATA Data;\r
} STM_LOG_ENTRY;\r
\r
/**\r
**/\r
#define STM_LOG_ENTRY_SIZE 256\r
\r
-\r
/**\r
STM Protection Exception Stack Frame Structures\r
**/\r
\r
typedef struct {\r
- UINT32 Rdi;\r
- UINT32 Rsi;\r
- UINT32 Rbp;\r
- UINT32 Rdx;\r
- UINT32 Rcx;\r
- UINT32 Rbx;\r
- UINT32 Rax;\r
- UINT32 Cr3;\r
- UINT32 Cr2;\r
- UINT32 Cr0;\r
- UINT32 VmcsExitInstructionInfo;\r
- UINT32 VmcsExitInstructionLength;\r
- UINT64 VmcsExitQualification;\r
+ UINT32 Rdi;\r
+ UINT32 Rsi;\r
+ UINT32 Rbp;\r
+ UINT32 Rdx;\r
+ UINT32 Rcx;\r
+ UINT32 Rbx;\r
+ UINT32 Rax;\r
+ UINT32 Cr3;\r
+ UINT32 Cr2;\r
+ UINT32 Cr0;\r
+ UINT32 VmcsExitInstructionInfo;\r
+ UINT32 VmcsExitInstructionLength;\r
+ UINT64 VmcsExitQualification;\r
///\r
/// An TXT_SMM_PROTECTION_EXCEPTION_TYPE num value\r
///\r
- UINT32 ErrorCode;\r
- UINT32 Rip;\r
- UINT32 Cs;\r
- UINT32 Rflags;\r
- UINT32 Rsp;\r
- UINT32 Ss;\r
+ UINT32 ErrorCode;\r
+ UINT32 Rip;\r
+ UINT32 Cs;\r
+ UINT32 Rflags;\r
+ UINT32 Rsp;\r
+ UINT32 Ss;\r
} STM_PROTECTION_EXCEPTION_STACK_FRAME_IA32;\r
\r
typedef struct {\r
- UINT64 R15;\r
- UINT64 R14;\r
- UINT64 R13;\r
- UINT64 R12;\r
- UINT64 R11;\r
- UINT64 R10;\r
- UINT64 R9;\r
- UINT64 R8;\r
- UINT64 Rdi;\r
- UINT64 Rsi;\r
- UINT64 Rbp;\r
- UINT64 Rdx;\r
- UINT64 Rcx;\r
- UINT64 Rbx;\r
- UINT64 Rax;\r
- UINT64 Cr8;\r
- UINT64 Cr3;\r
- UINT64 Cr2;\r
- UINT64 Cr0;\r
- UINT64 VmcsExitInstructionInfo;\r
- UINT64 VmcsExitInstructionLength;\r
- UINT64 VmcsExitQualification;\r
+ UINT64 R15;\r
+ UINT64 R14;\r
+ UINT64 R13;\r
+ UINT64 R12;\r
+ UINT64 R11;\r
+ UINT64 R10;\r
+ UINT64 R9;\r
+ UINT64 R8;\r
+ UINT64 Rdi;\r
+ UINT64 Rsi;\r
+ UINT64 Rbp;\r
+ UINT64 Rdx;\r
+ UINT64 Rcx;\r
+ UINT64 Rbx;\r
+ UINT64 Rax;\r
+ UINT64 Cr8;\r
+ UINT64 Cr3;\r
+ UINT64 Cr2;\r
+ UINT64 Cr0;\r
+ UINT64 VmcsExitInstructionInfo;\r
+ UINT64 VmcsExitInstructionLength;\r
+ UINT64 VmcsExitQualification;\r
///\r
/// An TXT_SMM_PROTECTION_EXCEPTION_TYPE num value\r
///\r
- UINT64 ErrorCode;\r
- UINT64 Rip;\r
- UINT64 Cs;\r
- UINT64 Rflags;\r
- UINT64 Rsp;\r
- UINT64 Ss;\r
+ UINT64 ErrorCode;\r
+ UINT64 Rip;\r
+ UINT64 Cs;\r
+ UINT64 Rflags;\r
+ UINT64 Rsp;\r
+ UINT64 Ss;\r
} STM_PROTECTION_EXCEPTION_STACK_FRAME_X64;\r
\r
typedef union {\r
- STM_PROTECTION_EXCEPTION_STACK_FRAME_IA32 *Ia32StackFrame;\r
- STM_PROTECTION_EXCEPTION_STACK_FRAME_X64 *X64StackFrame;\r
+ STM_PROTECTION_EXCEPTION_STACK_FRAME_IA32 *Ia32StackFrame;\r
+ STM_PROTECTION_EXCEPTION_STACK_FRAME_X64 *X64StackFrame;\r
} STM_PROTECTION_EXCEPTION_STACK_FRAME;\r
\r
/**\r
**/\r
\r
typedef struct {\r
- UINT64 SpeRip;\r
- UINT64 SpeRsp;\r
- UINT16 SpeSs;\r
- UINT16 PageViolationException:1;\r
- UINT16 MsrViolationException:1;\r
- UINT16 RegisterViolationException:1;\r
- UINT16 IoViolationException:1;\r
- UINT16 PciViolationException:1;\r
- UINT16 Reserved1:11;\r
- UINT32 Reserved2;\r
+ UINT64 SpeRip;\r
+ UINT64 SpeRsp;\r
+ UINT16 SpeSs;\r
+ UINT16 PageViolationException : 1;\r
+ UINT16 MsrViolationException : 1;\r
+ UINT16 RegisterViolationException : 1;\r
+ UINT16 IoViolationException : 1;\r
+ UINT16 PciViolationException : 1;\r
+ UINT16 Reserved1 : 11;\r
+ UINT32 Reserved2;\r
} STM_PROTECTION_EXCEPTION_HANDLER;\r
\r
typedef struct {\r
- UINT8 ExecutionDisableOutsideSmrr:1;\r
- UINT8 Intel64Mode:1;\r
- UINT8 Cr4Pae : 1;\r
- UINT8 Cr4Pse : 1;\r
- UINT8 Reserved1 : 4;\r
+ UINT8 ExecutionDisableOutsideSmrr : 1;\r
+ UINT8 Intel64Mode : 1;\r
+ UINT8 Cr4Pae : 1;\r
+ UINT8 Cr4Pse : 1;\r
+ UINT8 Reserved1 : 4;\r
} STM_SMM_ENTRY_STATE;\r
\r
typedef struct {\r
- UINT8 SmramToVmcsRestoreRequired : 1; ///> BIOS restore hint\r
- UINT8 ReinitializeVmcsRequired : 1; ///> BIOS request\r
- UINT8 Reserved2 : 6;\r
+ UINT8 SmramToVmcsRestoreRequired : 1; /// > BIOS restore hint\r
+ UINT8 ReinitializeVmcsRequired : 1; /// > BIOS request\r
+ UINT8 Reserved2 : 6;\r
} STM_SMM_RESUME_STATE;\r
\r
typedef struct {\r
- UINT8 DomainType : 4; ///> STM input to BIOS on each SMI\r
- UINT8 XStatePolicy : 2; ///> STM input to BIOS on each SMI\r
- UINT8 EptEnabled : 1;\r
- UINT8 Reserved3 : 1;\r
+ UINT8 DomainType : 4; /// > STM input to BIOS on each SMI\r
+ UINT8 XStatePolicy : 2; /// > STM input to BIOS on each SMI\r
+ UINT8 EptEnabled : 1;\r
+ UINT8 Reserved3 : 1;\r
} STM_SMM_STATE;\r
\r
#define TXT_SMM_PSD_OFFSET 0xfb00\r
#define TXT_PROCESSOR_SMM_DESCRIPTOR_VERSION_MINOR 0\r
\r
typedef struct {\r
- UINT64 Signature;\r
- UINT16 Size;\r
- UINT8 SmmDescriptorVerMajor;\r
- UINT8 SmmDescriptorVerMinor;\r
- UINT32 LocalApicId;\r
- STM_SMM_ENTRY_STATE SmmEntryState;\r
- STM_SMM_RESUME_STATE SmmResumeState;\r
- STM_SMM_STATE StmSmmState;\r
- UINT8 Reserved4;\r
- UINT16 SmmCs;\r
- UINT16 SmmDs;\r
- UINT16 SmmSs;\r
- UINT16 SmmOtherSegment;\r
- UINT16 SmmTr;\r
- UINT16 Reserved5;\r
- UINT64 SmmCr3;\r
- UINT64 SmmStmSetupRip;\r
- UINT64 SmmStmTeardownRip;\r
- UINT64 SmmSmiHandlerRip;\r
- UINT64 SmmSmiHandlerRsp;\r
- UINT64 SmmGdtPtr;\r
- UINT32 SmmGdtSize;\r
- UINT32 RequiredStmSmmRevId;\r
- STM_PROTECTION_EXCEPTION_HANDLER StmProtectionExceptionHandler;\r
- UINT64 Reserved6;\r
- UINT64 BiosHwResourceRequirementsPtr;\r
+ UINT64 Signature;\r
+ UINT16 Size;\r
+ UINT8 SmmDescriptorVerMajor;\r
+ UINT8 SmmDescriptorVerMinor;\r
+ UINT32 LocalApicId;\r
+ STM_SMM_ENTRY_STATE SmmEntryState;\r
+ STM_SMM_RESUME_STATE SmmResumeState;\r
+ STM_SMM_STATE StmSmmState;\r
+ UINT8 Reserved4;\r
+ UINT16 SmmCs;\r
+ UINT16 SmmDs;\r
+ UINT16 SmmSs;\r
+ UINT16 SmmOtherSegment;\r
+ UINT16 SmmTr;\r
+ UINT16 Reserved5;\r
+ UINT64 SmmCr3;\r
+ UINT64 SmmStmSetupRip;\r
+ UINT64 SmmStmTeardownRip;\r
+ UINT64 SmmSmiHandlerRip;\r
+ UINT64 SmmSmiHandlerRsp;\r
+ UINT64 SmmGdtPtr;\r
+ UINT32 SmmGdtSize;\r
+ UINT32 RequiredStmSmmRevId;\r
+ STM_PROTECTION_EXCEPTION_HANDLER StmProtectionExceptionHandler;\r
+ UINT64 Reserved6;\r
+ UINT64 BiosHwResourceRequirementsPtr;\r
// extend area\r
- UINT64 AcpiRsdp;\r
- UINT8 PhysicalAddressBits;\r
+ UINT64 AcpiRsdp;\r
+ UINT8 PhysicalAddressBits;\r
} TXT_PROCESSOR_SMM_DESCRIPTOR;\r
\r
#pragma pack ()\r