]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Protocol/SmmCpu.h
MdePkg: Reference new definitions for Management Mode.
[mirror_edk2.git] / MdePkg / Include / Protocol / SmmCpu.h
index 2e7f7c3db049fb6d84504f45dde36df49da304f5..117b9a36ee874d11aad95fbcb9357fa9456aacdf 100644 (file)
@@ -6,7 +6,7 @@
   but not in the same format. These so-called pseudo-registers provide this information in a standard \r
   format.  \r
 \r
-  Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR>\r
   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
 #ifndef _SMM_CPU_H_\r
 #define _SMM_CPU_H_\r
 \r
-#define EFI_SMM_CPU_PROTOCOL_GUID \\r
-  { \\r
-    0xeb346b97, 0x975f, 0x4a9f, { 0x8b, 0x22, 0xf8, 0xe9, 0x2b, 0xb3, 0xd5, 0x69 } \\r
-  }\r
+#include <Protocol/MmCpu.h>\r
+\r
+#define EFI_SMM_CPU_PROTOCOL_GUID  EFI_MM_CPU_PROTOCOL_GUID\r
+\r
+#define EFI_SMM_SAVE_STATE_REGISTER_GDTBASE       EFI_MM_SAVE_STATE_REGISTER_GDTBASE\r
+#define EFI_SMM_SAVE_STATE_REGISTER_IDTBASE       EFI_MM_SAVE_STATE_REGISTER_IDTBASE\r
+#define EFI_SMM_SAVE_STATE_REGISTER_LDTBASE       EFI_MM_SAVE_STATE_REGISTER_LDTBASE\r
+#define EFI_SMM_SAVE_STATE_REGISTER_GDTLIMIT      EFI_MM_SAVE_STATE_REGISTER_GDTLIMIT\r
+#define EFI_SMM_SAVE_STATE_REGISTER_IDTLIMIT      EFI_MM_SAVE_STATE_REGISTER_IDTLIMIT\r
+#define EFI_SMM_SAVE_STATE_REGISTER_LDTLIMIT      EFI_MM_SAVE_STATE_REGISTER_LDTLIMIT\r
+#define EFI_SMM_SAVE_STATE_REGISTER_LDTINFO       EFI_MM_SAVE_STATE_REGISTER_LDTINFO\r
+#define EFI_SMM_SAVE_STATE_REGISTER_ES            EFI_MM_SAVE_STATE_REGISTER_ES\r
+#define EFI_SMM_SAVE_STATE_REGISTER_CS            EFI_MM_SAVE_STATE_REGISTER_CS\r
+#define EFI_SMM_SAVE_STATE_REGISTER_SS            EFI_MM_SAVE_STATE_REGISTER_SS\r
+#define EFI_SMM_SAVE_STATE_REGISTER_DS            EFI_MM_SAVE_STATE_REGISTER_DS\r
+#define EFI_SMM_SAVE_STATE_REGISTER_FS            EFI_MM_SAVE_STATE_REGISTER_FS\r
+#define EFI_SMM_SAVE_STATE_REGISTER_GS            EFI_MM_SAVE_STATE_REGISTER_GS\r
+#define EFI_SMM_SAVE_STATE_REGISTER_LDTR_SEL      EFI_MM_SAVE_STATE_REGISTER_LDTR_SEL\r
+#define EFI_SMM_SAVE_STATE_REGISTER_TR_SEL        EFI_MM_SAVE_STATE_REGISTER_TR_SEL\r
+#define EFI_SMM_SAVE_STATE_REGISTER_DR7           EFI_MM_SAVE_STATE_REGISTER_DR7\r
+#define EFI_SMM_SAVE_STATE_REGISTER_DR6           EFI_MM_SAVE_STATE_REGISTER_DR6\r
+#define EFI_SMM_SAVE_STATE_REGISTER_R8            EFI_MM_SAVE_STATE_REGISTER_R8\r
+#define EFI_SMM_SAVE_STATE_REGISTER_R9            EFI_MM_SAVE_STATE_REGISTER_R9\r
+#define EFI_SMM_SAVE_STATE_REGISTER_R10           EFI_MM_SAVE_STATE_REGISTER_R10\r
+#define EFI_SMM_SAVE_STATE_REGISTER_R11           EFI_MM_SAVE_STATE_REGISTER_R11\r
+#define EFI_SMM_SAVE_STATE_REGISTER_R12           EFI_MM_SAVE_STATE_REGISTER_R12\r
+#define EFI_SMM_SAVE_STATE_REGISTER_R13           EFI_MM_SAVE_STATE_REGISTER_R13\r
+#define EFI_SMM_SAVE_STATE_REGISTER_R14           EFI_MM_SAVE_STATE_REGISTER_R14\r
+#define EFI_SMM_SAVE_STATE_REGISTER_R15           EFI_MM_SAVE_STATE_REGISTER_R15\r
+#define EFI_SMM_SAVE_STATE_REGISTER_RAX           EFI_MM_SAVE_STATE_REGISTER_RAX\r
+#define EFI_SMM_SAVE_STATE_REGISTER_RBX           EFI_MM_SAVE_STATE_REGISTER_RBX\r
+#define EFI_SMM_SAVE_STATE_REGISTER_RCX           EFI_MM_SAVE_STATE_REGISTER_RCX\r
+#define EFI_SMM_SAVE_STATE_REGISTER_RDX           EFI_MM_SAVE_STATE_REGISTER_RDX\r
+#define EFI_SMM_SAVE_STATE_REGISTER_RSP           EFI_MM_SAVE_STATE_REGISTER_RSP\r
+#define EFI_SMM_SAVE_STATE_REGISTER_RBP           EFI_MM_SAVE_STATE_REGISTER_RBP\r
+#define EFI_SMM_SAVE_STATE_REGISTER_RSI           EFI_MM_SAVE_STATE_REGISTER_RSI\r
+#define EFI_SMM_SAVE_STATE_REGISTER_RDI           EFI_MM_SAVE_STATE_REGISTER_RDI\r
+#define EFI_SMM_SAVE_STATE_REGISTER_RIP           EFI_MM_SAVE_STATE_REGISTER_RIP\r
+#define EFI_SMM_SAVE_STATE_REGISTER_RFLAGS        EFI_MM_SAVE_STATE_REGISTER_RFLAGS\r
+#define EFI_SMM_SAVE_STATE_REGISTER_CR0           EFI_MM_SAVE_STATE_REGISTER_CR0\r
+#define EFI_SMM_SAVE_STATE_REGISTER_CR3           EFI_MM_SAVE_STATE_REGISTER_CR3\r
+#define EFI_SMM_SAVE_STATE_REGISTER_CR4           EFI_MM_SAVE_STATE_REGISTER_CR4\r
+#define EFI_SMM_SAVE_STATE_REGISTER_FCW           EFI_MM_SAVE_STATE_REGISTER_FCW\r
+#define EFI_SMM_SAVE_STATE_REGISTER_FSW           EFI_MM_SAVE_STATE_REGISTER_FSW\r
+#define EFI_SMM_SAVE_STATE_REGISTER_FTW           EFI_MM_SAVE_STATE_REGISTER_FTW\r
+#define EFI_SMM_SAVE_STATE_REGISTER_OPCODE        EFI_MM_SAVE_STATE_REGISTER_OPCODE\r
+#define EFI_SMM_SAVE_STATE_REGISTER_FP_EIP        EFI_MM_SAVE_STATE_REGISTER_FP_EIP\r
+#define EFI_SMM_SAVE_STATE_REGISTER_FP_CS         EFI_MM_SAVE_STATE_REGISTER_FP_CS\r
+#define EFI_SMM_SAVE_STATE_REGISTER_DATAOFFSET    EFI_MM_SAVE_STATE_REGISTER_DATAOFFSET\r
+#define EFI_SMM_SAVE_STATE_REGISTER_FP_DS         EFI_MM_SAVE_STATE_REGISTER_FP_DS\r
+#define EFI_SMM_SAVE_STATE_REGISTER_MM0           EFI_MM_SAVE_STATE_REGISTER_MM0\r
+#define EFI_SMM_SAVE_STATE_REGISTER_MM1           EFI_MM_SAVE_STATE_REGISTER_MM1\r
+#define EFI_SMM_SAVE_STATE_REGISTER_MM2           EFI_MM_SAVE_STATE_REGISTER_MM2\r
+#define EFI_SMM_SAVE_STATE_REGISTER_MM3           EFI_MM_SAVE_STATE_REGISTER_MM3\r
+#define EFI_SMM_SAVE_STATE_REGISTER_MM4           EFI_MM_SAVE_STATE_REGISTER_MM4\r
+#define EFI_SMM_SAVE_STATE_REGISTER_MM5           EFI_MM_SAVE_STATE_REGISTER_MM5\r
+#define EFI_SMM_SAVE_STATE_REGISTER_MM6           EFI_MM_SAVE_STATE_REGISTER_MM6\r
+#define EFI_SMM_SAVE_STATE_REGISTER_MM7           EFI_MM_SAVE_STATE_REGISTER_MM7\r
+#define EFI_SMM_SAVE_STATE_REGISTER_XMM0          EFI_MM_SAVE_STATE_REGISTER_XMM0\r
+#define EFI_SMM_SAVE_STATE_REGISTER_XMM1          EFI_MM_SAVE_STATE_REGISTER_XMM1\r
+#define EFI_SMM_SAVE_STATE_REGISTER_XMM2          EFI_MM_SAVE_STATE_REGISTER_XMM2\r
+#define EFI_SMM_SAVE_STATE_REGISTER_XMM3          EFI_MM_SAVE_STATE_REGISTER_XMM3\r
+#define EFI_SMM_SAVE_STATE_REGISTER_XMM4          EFI_MM_SAVE_STATE_REGISTER_XMM4\r
+#define EFI_SMM_SAVE_STATE_REGISTER_XMM5          EFI_MM_SAVE_STATE_REGISTER_XMM5\r
+#define EFI_SMM_SAVE_STATE_REGISTER_XMM6          EFI_MM_SAVE_STATE_REGISTER_XMM6\r
+#define EFI_SMM_SAVE_STATE_REGISTER_XMM7          EFI_MM_SAVE_STATE_REGISTER_XMM7\r
+#define EFI_SMM_SAVE_STATE_REGISTER_XMM8          EFI_MM_SAVE_STATE_REGISTER_XMM8\r
+#define EFI_SMM_SAVE_STATE_REGISTER_XMM9          EFI_MM_SAVE_STATE_REGISTER_XMM9\r
+#define EFI_SMM_SAVE_STATE_REGISTER_XMM10         EFI_MM_SAVE_STATE_REGISTER_XMM10\r
+#define EFI_SMM_SAVE_STATE_REGISTER_XMM11         EFI_MM_SAVE_STATE_REGISTER_XMM11\r
+#define EFI_SMM_SAVE_STATE_REGISTER_XMM12         EFI_MM_SAVE_STATE_REGISTER_XMM12\r
+#define EFI_SMM_SAVE_STATE_REGISTER_XMM13         EFI_MM_SAVE_STATE_REGISTER_XMM13\r
+#define EFI_SMM_SAVE_STATE_REGISTER_XMM14         EFI_MM_SAVE_STATE_REGISTER_XMM14\r
+#define EFI_SMM_SAVE_STATE_REGISTER_XMM15         EFI_MM_SAVE_STATE_REGISTER_XMM15\r
+#define EFI_SMM_SAVE_STATE_REGISTER_IO            EFI_MM_SAVE_STATE_REGISTER_IO\r
+#define EFI_SMM_SAVE_STATE_REGISTER_LMA           EFI_MM_SAVE_STATE_REGISTER_LMA\r
+#define EFI_SMM_SAVE_STATE_REGISTER_PROCESSOR_ID  EFI_MM_SAVE_STATE_REGISTER_PROCESSOR_ID\r
+\r
+typedef EFI_MM_SAVE_STATE_REGISTER  EFI_SMM_SAVE_STATE_REGISTER;\r
+\r
+\r
+#define EFI_SMM_SAVE_STATE_REGISTER_LMA_32BIT EFI_MM_SAVE_STATE_REGISTER_LMA_32BIT\r
+#define EFI_SMM_SAVE_STATE_REGISTER_LMA_64BIT EFI_MM_SAVE_STATE_REGISTER_LMA_64BIT\r
 \r
-///\r
-/// Save State register index\r
-///\r
-typedef enum {\r
-  ///\r
-  /// x86/X64 standard registers\r
-  ///\r
-  EFI_SMM_SAVE_STATE_REGISTER_GDTBASE       = 4,\r
-  EFI_SMM_SAVE_STATE_REGISTER_IDTBASE       = 5,\r
-  EFI_SMM_SAVE_STATE_REGISTER_LDTBASE       = 6,\r
-  EFI_SMM_SAVE_STATE_REGISTER_GDTLIMIT      = 7,\r
-  EFI_SMM_SAVE_STATE_REGISTER_IDTLIMIT      = 8,\r
-  EFI_SMM_SAVE_STATE_REGISTER_LDTLIMIT      = 9,\r
-  EFI_SMM_SAVE_STATE_REGISTER_LDTINFO       = 10,\r
-  EFI_SMM_SAVE_STATE_REGISTER_ES            = 20,\r
-  EFI_SMM_SAVE_STATE_REGISTER_CS            = 21,\r
-  EFI_SMM_SAVE_STATE_REGISTER_SS            = 22,\r
-  EFI_SMM_SAVE_STATE_REGISTER_DS            = 23,\r
-  EFI_SMM_SAVE_STATE_REGISTER_FS            = 24,\r
-  EFI_SMM_SAVE_STATE_REGISTER_GS            = 25,\r
-  EFI_SMM_SAVE_STATE_REGISTER_LDTR_SEL      = 26,\r
-  EFI_SMM_SAVE_STATE_REGISTER_TR_SEL        = 27,\r
-  EFI_SMM_SAVE_STATE_REGISTER_DR7           = 28,\r
-  EFI_SMM_SAVE_STATE_REGISTER_DR6           = 29,\r
-  EFI_SMM_SAVE_STATE_REGISTER_R8            = 30,\r
-  EFI_SMM_SAVE_STATE_REGISTER_R9            = 31,\r
-  EFI_SMM_SAVE_STATE_REGISTER_R10           = 32,\r
-  EFI_SMM_SAVE_STATE_REGISTER_R11           = 33,\r
-  EFI_SMM_SAVE_STATE_REGISTER_R12           = 34,\r
-  EFI_SMM_SAVE_STATE_REGISTER_R13           = 35,\r
-  EFI_SMM_SAVE_STATE_REGISTER_R14           = 36,\r
-  EFI_SMM_SAVE_STATE_REGISTER_R15           = 37,  \r
-  EFI_SMM_SAVE_STATE_REGISTER_RAX           = 38,\r
-  EFI_SMM_SAVE_STATE_REGISTER_RBX           = 39,\r
-  EFI_SMM_SAVE_STATE_REGISTER_RCX           = 40,\r
-  EFI_SMM_SAVE_STATE_REGISTER_RDX           = 41,\r
-  EFI_SMM_SAVE_STATE_REGISTER_RSP           = 42,\r
-  EFI_SMM_SAVE_STATE_REGISTER_RBP           = 43,\r
-  EFI_SMM_SAVE_STATE_REGISTER_RSI           = 44,\r
-  EFI_SMM_SAVE_STATE_REGISTER_RDI           = 45,\r
-  EFI_SMM_SAVE_STATE_REGISTER_RIP           = 46,\r
-  EFI_SMM_SAVE_STATE_REGISTER_RFLAGS        = 51,\r
-  EFI_SMM_SAVE_STATE_REGISTER_CR0           = 52,\r
-  EFI_SMM_SAVE_STATE_REGISTER_CR3           = 53,\r
-  EFI_SMM_SAVE_STATE_REGISTER_CR4           = 54,\r
-  EFI_SMM_SAVE_STATE_REGISTER_FCW           = 256,\r
-  EFI_SMM_SAVE_STATE_REGISTER_FSW           = 257,\r
-  EFI_SMM_SAVE_STATE_REGISTER_FTW           = 258,  \r
-  EFI_SMM_SAVE_STATE_REGISTER_OPCODE        = 259,\r
-  EFI_SMM_SAVE_STATE_REGISTER_FP_EIP        = 260,\r
-  EFI_SMM_SAVE_STATE_REGISTER_FP_CS         = 261,\r
-  EFI_SMM_SAVE_STATE_REGISTER_DATAOFFSET    = 262,\r
-  EFI_SMM_SAVE_STATE_REGISTER_FP_DS         = 263,\r
-  EFI_SMM_SAVE_STATE_REGISTER_MM0           = 264,\r
-  EFI_SMM_SAVE_STATE_REGISTER_MM1           = 265,\r
-  EFI_SMM_SAVE_STATE_REGISTER_MM2           = 266,\r
-  EFI_SMM_SAVE_STATE_REGISTER_MM3           = 267,\r
-  EFI_SMM_SAVE_STATE_REGISTER_MM4           = 268,\r
-  EFI_SMM_SAVE_STATE_REGISTER_MM5           = 269,\r
-  EFI_SMM_SAVE_STATE_REGISTER_MM6           = 270,\r
-  EFI_SMM_SAVE_STATE_REGISTER_MM7           = 271,\r
-  EFI_SMM_SAVE_STATE_REGISTER_XMM0          = 272,\r
-  EFI_SMM_SAVE_STATE_REGISTER_XMM1          = 273,\r
-  EFI_SMM_SAVE_STATE_REGISTER_XMM2          = 274,\r
-  EFI_SMM_SAVE_STATE_REGISTER_XMM3          = 275,\r
-  EFI_SMM_SAVE_STATE_REGISTER_XMM4          = 276,\r
-  EFI_SMM_SAVE_STATE_REGISTER_XMM5          = 277,\r
-  EFI_SMM_SAVE_STATE_REGISTER_XMM6          = 278,\r
-  EFI_SMM_SAVE_STATE_REGISTER_XMM7          = 279,\r
-  EFI_SMM_SAVE_STATE_REGISTER_XMM8          = 280,\r
-  EFI_SMM_SAVE_STATE_REGISTER_XMM9          = 281,\r
-  EFI_SMM_SAVE_STATE_REGISTER_XMM10         = 282,\r
-  EFI_SMM_SAVE_STATE_REGISTER_XMM11         = 283,\r
-  EFI_SMM_SAVE_STATE_REGISTER_XMM12         = 284,\r
-  EFI_SMM_SAVE_STATE_REGISTER_XMM13         = 285,\r
-  EFI_SMM_SAVE_STATE_REGISTER_XMM14         = 286,\r
-  EFI_SMM_SAVE_STATE_REGISTER_XMM15         = 287,  \r
-  ///\r
-  /// Pseudo-Registers\r
-  ///\r
-  EFI_SMM_SAVE_STATE_REGISTER_IO            = 512,\r
-  EFI_SMM_SAVE_STATE_REGISTER_LMA           = 513,\r
-  EFI_SMM_SAVE_STATE_REGISTER_PROCESSOR_ID  = 514\r
-} EFI_SMM_SAVE_STATE_REGISTER;  \r
-\r
-///\r
-/// The EFI_SMM_SAVE_STATE_REGISTER_LMA pseudo-register values\r
-/// If the processor acts in 32-bit mode at the time the SMI occurred, the pseudo register value \r
-/// EFI_SMM_SAVE_STATE_REGISTER_LMA_32BIT is returned in Buffer. Otherwise, \r
-/// EFI_SMM_SAVE_STATE_REGISTER_LMA_64BIT is returned in Buffer.\r
-///\r
-#define EFI_SMM_SAVE_STATE_REGISTER_LMA_32BIT  32\r
-#define EFI_SMM_SAVE_STATE_REGISTER_LMA_64BIT  64\r
 \r
 ///\r
 /// Size width of I/O instruction\r
 ///\r
-typedef enum {\r
-  EFI_SMM_SAVE_STATE_IO_WIDTH_UINT8      = 0,\r
-  EFI_SMM_SAVE_STATE_IO_WIDTH_UINT16     = 1,\r
-  EFI_SMM_SAVE_STATE_IO_WIDTH_UINT32     = 2,\r
-  EFI_SMM_SAVE_STATE_IO_WIDTH_UINT64     = 3\r
-} EFI_SMM_SAVE_STATE_IO_WIDTH;\r
+#define EFI_SMM_SAVE_STATE_IO_WIDTH_UINT8 EFI_MM_SAVE_STATE_IO_WIDTH_UINT8\r
+#define EFI_SMM_SAVE_STATE_IO_WIDTH_UINT16 EFI_MM_SAVE_STATE_IO_WIDTH_UINT16\r
+#define EFI_SMM_SAVE_STATE_IO_WIDTH_UINT32 EFI_MM_SAVE_STATE_IO_WIDTH_UINT32\r
+#define EFI_SMM_SAVE_STATE_IO_WIDTH_UINT64 EFI_MM_SAVE_STATE_IO_WIDTH_UINT64\r
+typedef EFI_MM_SAVE_STATE_IO_WIDTH EFI_SMM_SAVE_STATE_IO_WIDTH;\r
 \r
 ///\r
 /// Types of I/O instruction\r
 ///\r
-typedef enum {\r
-  EFI_SMM_SAVE_STATE_IO_TYPE_INPUT       = 1,\r
-  EFI_SMM_SAVE_STATE_IO_TYPE_OUTPUT      = 2,\r
-  EFI_SMM_SAVE_STATE_IO_TYPE_STRING      = 4,\r
-  EFI_SMM_SAVE_STATE_IO_TYPE_REP_PREFIX  = 8\r
-} EFI_SMM_SAVE_STATE_IO_TYPE;\r
+#define EFI_SMM_SAVE_STATE_IO_TYPE_INPUT EFI_MM_SAVE_STATE_IO_TYPE_INPUT\r
+#define EFI_SMM_SAVE_STATE_IO_TYPE_OUTPUT EFI_MM_SAVE_STATE_IO_TYPE_OUTPUT\r
+#define EFI_SMM_SAVE_STATE_IO_TYPE_STRING EFI_MM_SAVE_STATE_IO_TYPE_STRING\r
+#define EFI_SMM_SAVE_STATE_IO_TYPE_REP_PREFIX EFI_MM_SAVE_STATE_IO_TYPE_REP_PREFIX\r
+typedef  EFI_MM_SAVE_STATE_IO_TYPE EFI_SMM_SAVE_STATE_IO_TYPE;\r
 \r
-///\r
-/// Structure of the data which is returned when ReadSaveState() is called with \r
-/// EFI_SMM_SAVE_STATE_REGISTER_IO. If there was no I/O then ReadSaveState() will \r
-/// return EFI_NOT_FOUND.\r
-///\r
-/// This structure describes the I/O operation which was in process when the SMI was generated.\r
-///\r
-typedef struct _EFI_SMM_SAVE_STATE_IO_INFO {\r
-  ///\r
-  /// For input instruction (IN, INS), this is data read before the SMI occurred. For output \r
-  /// instructions (OUT, OUTS) this is data that was written before the SMI occurred. The \r
-  /// width of the data is specified by IoWidth.\r
-  ///\r
-  UINT64                        IoData;\r
-  ///\r
-  /// The I/O port that was being accessed when the SMI was triggered.\r
-  ///\r
-  UINT16                        IoPort;\r
-  ///\r
-  /// Defines the size width (UINT8, UINT16, UINT32, UINT64) for IoData.\r
-  ///\r
-  EFI_SMM_SAVE_STATE_IO_WIDTH   IoWidth;\r
-  ///\r
-  /// Defines type of I/O instruction.\r
-  ///\r
-  EFI_SMM_SAVE_STATE_IO_TYPE    IoType;\r
-} EFI_SMM_SAVE_STATE_IO_INFO;\r
-  \r
-typedef struct _EFI_SMM_CPU_PROTOCOL  EFI_SMM_CPU_PROTOCOL;\r
-\r
-/**\r
-  Read data from the CPU save state.\r
-\r
-  This function is used to read the specified number of bytes of the specified register from the CPU \r
-  save state of the specified CPU and place the value into the buffer. If the CPU does not support the\r
-  specified register Register, then EFI_NOT_FOUND  should be returned. If the CPU does not \r
-  support the specified register width Width, then EFI_INVALID_PARAMETER is returned.\r
-\r
-  @param[in]  This               The EFI_SMM_CPU_PROTOCOL instance.\r
-  @param[in]  Width              The number of bytes to read from the CPU save state.\r
-  @param[in]  Register           Specifies the CPU register to read form the save state.\r
-  @param[in]  CpuIndex           Specifies the zero-based index of the CPU save state.\r
-  @param[out] Buffer             Upon return, this holds the CPU register value read from the save state.\r
-    \r
-  @retval EFI_SUCCESS            The register was read from Save State.\r
-  @retval EFI_NOT_FOUND          The register is not defined for the Save State of Processor.\r
-  @retval EFI_INVALID_PARAMETER  Input parameters are not valid, for example, Processor No or register width \r
-                                 is not correct.This or Buffer is NULL.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_READ_SAVE_STATE)(\r
-  IN CONST EFI_SMM_CPU_PROTOCOL   *This,\r
-  IN UINTN                        Width,\r
-  IN EFI_SMM_SAVE_STATE_REGISTER  Register,\r
-  IN UINTN                        CpuIndex,\r
-  OUT VOID                        *Buffer\r
-  );\r
-\r
-\r
-/**\r
-  Write data to the CPU save state.\r
-\r
-  This function is used to write the specified number of bytes of the specified register to the CPU save \r
-  state of the specified CPU and place the value into the buffer. If the CPU does not support the \r
-  specified register Register, then EFI_UNSUPPORTED should be returned. If the CPU does not \r
-  support the specified register width Width, then EFI_INVALID_PARAMETER is returned.\r
-\r
-  @param[in]  This               The EFI_SMM_CPU_PROTOCOL instance.\r
-  @param[in]  Width              The number of bytes to write to the CPU save state.\r
-  @param[in]  Register           Specifies the CPU register to write to the save state.\r
-  @param[in]  CpuIndex           Specifies the zero-based index of the CPU save state.\r
-  @param[in]  Buffer             Upon entry, this holds the new CPU register value.\r
-  \r
-  @retval EFI_SUCCESS            The register was written to Save State.\r
-  @retval EFI_NOT_FOUND          The register is not defined for the Save State of Processor.\r
-  @retval EFI_INVALID_PARAMETER  Input parameters are not valid. For example: \r
-                                 ProcessorIndex or Width is not correct.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_WRITE_SAVE_STATE)(\r
-  IN CONST EFI_SMM_CPU_PROTOCOL   *This,\r
-  IN UINTN                        Width, \r
-  IN EFI_SMM_SAVE_STATE_REGISTER  Register,\r
-  IN UINTN                        CpuIndex,\r
-  IN CONST VOID                   *Buffer\r
-  );\r
+typedef  EFI_MM_SAVE_STATE_IO_INFO EFI_SMM_SAVE_STATE_IO_INFO;\r
 \r
-///\r
-/// EFI SMM CPU Protocol provides access to CPU-related information while in SMM.\r
-///\r
-/// This protocol allows SMM drivers to access architecture-standard registers from any of the CPU \r
-/// save state areas. In some cases, difference processors provide the same information in the save state, \r
-/// but not in the same format. These so-called pseudo-registers provide this information in a standard \r
-/// format.  \r
-///\r
-struct _EFI_SMM_CPU_PROTOCOL {\r
-  EFI_SMM_READ_SAVE_STATE   ReadSaveState;\r
-  EFI_SMM_WRITE_SAVE_STATE  WriteSaveState;\r
-};\r
+typedef  EFI_MM_CPU_PROTOCOL EFI_SMM_CPU_PROTOCOL;\r
+\r
+typedef EFI_MM_READ_SAVE_STATE EFI_SMM_READ_SAVE_STATE;\r
 \r
+typedef EFI_MM_WRITE_SAVE_STATE EFI_SMM_WRITE_SAVE_STATE;\r
 extern EFI_GUID gEfiSmmCpuProtocolGuid;\r
 \r
 #endif\r