#include <Pi/PiMultiPhase.h>\r
#include <Protocol/SmmCpuIo.h>\r
\r
-typedef struct _EFI_SMM_SYSTEM_TABLE EFI_SMM_SYSTEM_TABLE;\r
+///\r
+/// Note:\r
+/// To avoid name conflict between PI and Framework SMM spec, the following names defined\r
+/// in PI 1.2 SMM spec are renamed. These renamings are not yet in a public PI spec and errta.\r
+///\r
+/// EFI_SMM_SYSTEM_TABLE -> EFI_SMM_SYSTEM_TABLE2\r
+/// EFI_SMM_SYSTEM_TABLE_REVISION -> EFI_SMM_SYSTEM_TABLE2_REVISION\r
+/// EFI_SMM_INSTALL_CONFIGURATION_TABLE -> EFI_SMM_INSTALL_CONFIGURATION_TABLE2\r
+///\r
+\r
+typedef struct _EFI_SMM_SYSTEM_TABLE2 EFI_SMM_SYSTEM_TABLE2;\r
\r
///\r
/// The System Management System Table (SMST) signature\r
///\r
/// The System Management System Table (SMST) revision is 1.0\r
///\r
-#define EFI_SMM_SYSTEM_TABLE_REVISION ((1 << 16) | (0x00))\r
+#define EFI_SMM_SYSTEM_TABLE2_REVISION ((1 << 16) | (0x00))\r
\r
/**\r
Adds, updates, or removes a configuration table entry from the System Management System Table.\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_SMM_INSTALL_CONFIGURATION_TABLE)(\r
- IN CONST EFI_SMM_SYSTEM_TABLE *SystemTable,\r
- IN CONST EFI_GUID *Guid,\r
- IN VOID *Table,\r
- IN UINTN TableSize\r
+(EFIAPI *EFI_SMM_INSTALL_CONFIGURATION_TABLE2)(\r
+ IN CONST EFI_SMM_SYSTEM_TABLE2 *SystemTable,\r
+ IN CONST EFI_GUID *Guid,\r
+ IN VOID *Table,\r
+ IN UINTN TableSize\r
);\r
\r
/**\r
/// services for managing SMRAM allocation and providing basic I/O services. These services are \r
/// intended for both preboot and runtime usage.\r
///\r
-struct _EFI_SMM_SYSTEM_TABLE {\r
+struct _EFI_SMM_SYSTEM_TABLE2 {\r
///\r
/// The table header for the SMST.\r
///\r
- EFI_TABLE_HEADER Hdr;\r
+ EFI_TABLE_HEADER Hdr;\r
///\r
/// A pointer to a NULL-terminated Unicode string containing the vendor name.\r
/// It is permissible for this pointer to be NULL.\r
///\r
- CHAR16 *SmmFirmwareVendor;\r
+ CHAR16 *SmmFirmwareVendor;\r
///\r
/// The particular revision of the firmware.\r
///\r
- UINT32 SmmFirmwareRevision;\r
+ UINT32 SmmFirmwareRevision;\r
\r
- EFI_SMM_INSTALL_CONFIGURATION_TABLE SmmInstallConfigurationTable;\r
+ EFI_SMM_INSTALL_CONFIGURATION_TABLE2 SmmInstallConfigurationTable;\r
\r
///\r
/// I/O Service\r
///\r
- EFI_SMM_CPU_IO_PROTOCOL SmmIo;\r
+ EFI_SMM_CPU_IO_PROTOCOL SmmIo;\r
\r
///\r
/// Runtime memory services\r
///\r
- EFI_ALLOCATE_POOL SmmAllocatePool;\r
- EFI_FREE_POOL SmmFreePool;\r
- EFI_ALLOCATE_PAGES SmmAllocatePages;\r
- EFI_FREE_PAGES SmmFreePages;\r
+ EFI_ALLOCATE_POOL SmmAllocatePool;\r
+ EFI_FREE_POOL SmmFreePool;\r
+ EFI_ALLOCATE_PAGES SmmAllocatePages;\r
+ EFI_FREE_PAGES SmmFreePages;\r
\r
///\r
/// MP service\r
///\r
- EFI_SMM_STARTUP_THIS_AP SmmStartupThisAp;\r
+ EFI_SMM_STARTUP_THIS_AP SmmStartupThisAp;\r
\r
///\r
/// CPU information records\r
/// A number between zero and and the NumberOfCpus field. This field designates \r
/// which processor is executing the SMM infrastructure.\r
///\r
- UINTN CurrentlyExecutingCpu;\r
+ UINTN CurrentlyExecutingCpu;\r
///\r
/// The number of current operational processors in the platform. This is a 1 based counter.\r
///\r
- UINTN NumberOfCpus;\r
+ UINTN NumberOfCpus;\r
///\r
/// Points to an array, where each element describes the number of bytes in the \r
/// corresponding save state specified by CpuSaveState. There are always \r
/// NumberOfCpus entries in the array. \r
///\r
- UINTN *CpuSaveStateSize;\r
+ UINTN *CpuSaveStateSize;\r
///\r
/// Points to an array, where each element is a pointer to a CPU save state. The \r
/// corresponding element in CpuSaveStateSize specifies the number of bytes in the \r
/// save state area. There are always NumberOfCpus entries in the array.\r
///\r
- VOID **CpuSaveState;\r
+ VOID **CpuSaveState;\r
\r
///\r
/// Extensibility table\r
///\r
/// The number of UEFI Configuration Tables in the buffer SmmConfigurationTable.\r
///\r
- UINTN NumberOfTableEntries;\r
+ UINTN NumberOfTableEntries;\r
///\r
/// A pointer to the UEFI Configuration Tables. The number of entries in the table is \r
/// NumberOfTableEntries. \r
///\r
- EFI_CONFIGURATION_TABLE *SmmConfigurationTable;\r
+ EFI_CONFIGURATION_TABLE *SmmConfigurationTable;\r
\r
///\r
/// Protocol services\r
///\r
- EFI_INSTALL_PROTOCOL_INTERFACE SmmInstallProtocolInterface;\r
- EFI_UNINSTALL_PROTOCOL_INTERFACE SmmUninstallProtocolInterface;\r
- EFI_HANDLE_PROTOCOL SmmHandleProtocol;\r
- EFI_SMM_REGISTER_PROTOCOL_NOTIFY SmmRegisterProtocolNotify;\r
- EFI_LOCATE_HANDLE SmmLocateHandle;\r
- EFI_LOCATE_PROTOCOL SmmLocateProtocol;\r
+ EFI_INSTALL_PROTOCOL_INTERFACE SmmInstallProtocolInterface;\r
+ EFI_UNINSTALL_PROTOCOL_INTERFACE SmmUninstallProtocolInterface;\r
+ EFI_HANDLE_PROTOCOL SmmHandleProtocol;\r
+ EFI_SMM_REGISTER_PROTOCOL_NOTIFY SmmRegisterProtocolNotify;\r
+ EFI_LOCATE_HANDLE SmmLocateHandle;\r
+ EFI_LOCATE_PROTOCOL SmmLocateProtocol;\r
\r
///\r
/// SMI Management functions\r
///\r
- EFI_SMM_INTERRUPT_MANAGE SmiManage;\r
- EFI_SMM_INTERRUPT_REGISTER SmiHandlerRegister;\r
- EFI_SMM_INTERRUPT_UNREGISTER SmiHandlerUnRegister;\r
+ EFI_SMM_INTERRUPT_MANAGE SmiManage;\r
+ EFI_SMM_INTERRUPT_REGISTER SmiHandlerRegister;\r
+ EFI_SMM_INTERRUPT_UNREGISTER SmiHandlerUnRegister;\r
};\r
\r
#endif\r