+///@}\r
+\r
+///\r
+/// SMRAM states and capabilities\r
+///\r
+#define EFI_SMRAM_OPEN 0x00000001\r
+#define EFI_SMRAM_CLOSED 0x00000002\r
+#define EFI_SMRAM_LOCKED 0x00000004\r
+#define EFI_CACHEABLE 0x00000008\r
+#define EFI_ALLOCATED 0x00000010\r
+#define EFI_NEEDS_TESTING 0x00000020\r
+#define EFI_NEEDS_ECC_INITIALIZATION 0x00000040\r
+\r
+///\r
+/// Structure describing a SMRAM region and its accessibility attributes.\r
+///\r
+typedef struct {\r
+ ///\r
+ /// Designates the physical address of the SMRAM in memory. This view of memory is \r
+ /// the same as seen by I/O-based agents, for example, but it may not be the address seen \r
+ /// by the processors.\r
+ ///\r
+ EFI_PHYSICAL_ADDRESS PhysicalStart;\r
+ ///\r
+ /// Designates the address of the SMRAM, as seen by software executing on the \r
+ /// processors. This address may or may not match PhysicalStart.\r
+ ///\r
+ EFI_PHYSICAL_ADDRESS CpuStart; \r
+ ///\r
+ /// Describes the number of bytes in the SMRAM region.\r
+ ///\r
+ UINT64 PhysicalSize;\r
+ ///\r
+ /// Describes the accessibility attributes of the SMRAM. These attributes include the \r
+ /// hardware state (e.g., Open/Closed/Locked), capability (e.g., cacheable), logical \r
+ /// allocation (e.g., allocated), and pre-use initialization (e.g., needs testing/ECC \r
+ /// initialization).\r
+ ///\r
+ UINT64 RegionState;\r
+} EFI_SMRAM_DESCRIPTOR;\r
+\r
+typedef enum {\r
+ EFI_PCD_TYPE_8,\r
+ EFI_PCD_TYPE_16,\r
+ EFI_PCD_TYPE_32,\r
+ EFI_PCD_TYPE_64,\r
+ EFI_PCD_TYPE_BOOL,\r
+ EFI_PCD_TYPE_PTR\r
+} EFI_PCD_TYPE;\r
+\r
+typedef struct {\r
+ ///\r
+ /// The returned information associated with the requested TokenNumber. If\r
+ /// TokenNumber is 0, then PcdType is set to EFI_PCD_TYPE_8.\r
+ ///\r
+ EFI_PCD_TYPE PcdType;\r
+ ///\r
+ /// The size of the data in bytes associated with the TokenNumber specified. If\r
+ /// TokenNumber is 0, then PcdSize is set 0.\r
+ ///\r
+ UINTN PcdSize;\r
+ ///\r
+ /// The null-terminated ASCII string associated with a given token. If the\r
+ /// TokenNumber specified was 0, then this field corresponds to the null-terminated\r
+ /// ASCII string associated with the token's namespace Guid. If NULL, there is no\r
+ /// name associated with this request.\r
+ ///\r
+ CHAR8 *PcdName;\r
+} EFI_PCD_INFO;\r
+\r
+/**\r
+ The function prototype for invoking a function on an Application Processor.\r
+\r
+ This definition is used by the UEFI MP Serices Protocol, and the\r
+ PI SMM System Table.\r
+\r
+ @param[in,out] Buffer The pointer to private data buffer.\r
+**/\r
+typedef\r
+VOID\r
+(EFIAPI *EFI_AP_PROCEDURE)(\r
+ IN OUT VOID *Buffer\r
+ );\r