EFI_REPORT_STATUS_CODE ReportStatusCode;\r
} FRAMEWORK_EFI_RUNTIME_SERVICES;\r
\r
+///\r
+/// Framework EFI Boot Services Table which comply with DxeCis spec.\r
+///\r
+typedef struct {\r
+ ///\r
+ /// The table header for the EFI Boot Services Table.\r
+ ///\r
+ EFI_TABLE_HEADER Hdr;\r
+\r
+ //\r
+ // Task Priority Services\r
+ //\r
+ EFI_RAISE_TPL RaiseTPL;\r
+ EFI_RESTORE_TPL RestoreTPL;\r
+\r
+ //\r
+ // Memory Services\r
+ //\r
+ EFI_ALLOCATE_PAGES AllocatePages;\r
+ EFI_FREE_PAGES FreePages;\r
+ EFI_GET_MEMORY_MAP GetMemoryMap;\r
+ EFI_ALLOCATE_POOL AllocatePool;\r
+ EFI_FREE_POOL FreePool;\r
+\r
+ //\r
+ // Event & Timer Services\r
+ //\r
+ EFI_CREATE_EVENT CreateEvent;\r
+ EFI_SET_TIMER SetTimer;\r
+ EFI_WAIT_FOR_EVENT WaitForEvent;\r
+ EFI_SIGNAL_EVENT SignalEvent;\r
+ EFI_CLOSE_EVENT CloseEvent;\r
+ EFI_CHECK_EVENT CheckEvent;\r
+\r
+ //\r
+ // Protocol Handler Services\r
+ //\r
+ EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface;\r
+ EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;\r
+ EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;\r
+ EFI_HANDLE_PROTOCOL HandleProtocol;\r
+ EFI_HANDLE_PROTOCOL PcHandleProtocol;\r
+ EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify;\r
+ EFI_LOCATE_HANDLE LocateHandle;\r
+ EFI_LOCATE_DEVICE_PATH LocateDevicePath;\r
+ EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;\r
+\r
+ //\r
+ // Image Services\r
+ //\r
+ EFI_IMAGE_LOAD LoadImage;\r
+ EFI_IMAGE_START StartImage;\r
+ EFI_EXIT Exit;\r
+ EFI_IMAGE_UNLOAD UnloadImage;\r
+ EFI_EXIT_BOOT_SERVICES ExitBootServices;\r
+\r
+ //\r
+ // Miscellaneous Services\r
+ //\r
+ EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount;\r
+ EFI_STALL Stall;\r
+ EFI_SET_WATCHDOG_TIMER SetWatchdogTimer;\r
+\r
+ //\r
+ // DriverSupport Services\r
+ //\r
+ EFI_CONNECT_CONTROLLER ConnectController;\r
+ EFI_DISCONNECT_CONTROLLER DisconnectController;\r
+\r
+ //\r
+ // Open and Close Protocol Services\r
+ //\r
+ EFI_OPEN_PROTOCOL OpenProtocol;\r
+ EFI_CLOSE_PROTOCOL CloseProtocol;\r
+ EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation;\r
+\r
+ //\r
+ // Library Services\r
+ //\r
+ EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle;\r
+ EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer;\r
+ EFI_LOCATE_PROTOCOL LocateProtocol;\r
+ EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces;\r
+ EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces;\r
+\r
+ //\r
+ // 32-bit CRC Services\r
+ //\r
+ EFI_CALCULATE_CRC32 CalculateCrc32;\r
+\r
+ //\r
+ // Miscellaneous Services\r
+ //\r
+ EFI_COPY_MEM CopyMem;\r
+ EFI_SET_MEM SetMem;\r
+} FRAMEWORK_EFI_BOOT_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
\r
#include <PiPei.h>\r
#include <Ppi/PciCfg.h>\r
+//\r
+// Framework PEI Specification Revision information\r
+//\r
+#define FRAMEWORK_PEI_SPECIFICATION_MAJOR_REVISION 0\r
+#define FRAMEWORK_PEI_SPECIFICATION_MINOR_REVISION 91\r
+\r
+///\r
+/// Inconsistent with specification here: \r
+/// In Framework Spec, PeiCis0.91, FRAMEWORK_PEI_SERVICES_SIGNATURE is defined as 0x5652455320494550. But \r
+/// to pass multiple tool chain, it is append a ULL.\r
+///\r
+//\r
+// PEI services signature and Revision defined in Framework PEI spec\r
+//\r
+#define FRAMEWORK_PEI_SERVICES_SIGNATURE 0x5652455320494550ULL\r
+#define FRAMEWORK_PEI_SERVICES_REVISION ((FRAMEWORK_PEI_SPECIFICATION_MAJOR_REVISION<<16) | (FRAMEWORK_PEI_SPECIFICATION_MINOR_REVISION))\r
+\r
+\r
\r
typedef struct _FRAMEWORK_EFI_PEI_SERVICES FRAMEWORK_EFI_PEI_SERVICES;\r
\r
EFI_PEI_COPY_MEM CopyMem;\r
EFI_PEI_SET_MEM SetMem;\r
//\r
+ // (the following interfaces are installed by publishing PEIM)\r
// Status Code\r
//\r
EFI_PEI_REPORT_STATUS_CODE ReportStatusCode;\r
//\r
EFI_PEI_RESET_SYSTEM ResetSystem;\r
//\r
- // (the following interfaces are installed by publishing PEIM)\r
- //\r
// I/O Abstractions\r
//\r
EFI_PEI_CPU_IO_PPI *CpuIo;\r
EFI_PEI_PCI_CFG_PPI *PciCfg;\r
};\r
+///\r
+/// Enumeration of reset types defined in Framework Spec PeiCis\r
+///\r
+typedef enum {\r
+ ///\r
+ /// Used to induce a system-wide reset. This sets all circuitry within the \r
+ /// system to its initial state. This type of reset is asynchronous to system\r
+ /// operation and operates withgout regard to cycle boundaries. EfiColdReset \r
+ /// is tantamount to a system power cycle.\r
+ ///\r
+ EfiPeiResetCold,\r
+ ///\r
+ /// Used to induce a system-wide initialization. The processors are set to their\r
+ /// initial state, and pending cycles are not corrupted. If the system does \r
+ /// not support this reset type, then an EfiResetCold must be performed.\r
+ ///\r
+ EfiPeiResetWarm,\r
+} EFI_PEI_RESET_TYPE;\r
\r
#endif \r
\r
#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002\r
#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004\r
\r
+\r
/**\r
Get Variable value by Name and GUID pair\r
\r
/// variable services. \r
///\r
struct _EFI_PEI_READ_ONLY_VARIABLE_PPI {\r
- EFI_PEI_GET_VARIABLE PeiGetVariable; ///< A service to ascertain a given variable name.\r
- EFI_PEI_GET_NEXT_VARIABLE_NAME PeiGetNextVariableName; ///< A service to ascertain a variable based upon a given, known variable\r
+ EFI_PEI_GET_VARIABLE GetVariable; ///< A service to ascertain a given variable name.\r
+ EFI_PEI_GET_NEXT_VARIABLE_NAME GetNextVariableName; ///< A service to ascertain a variable based upon a given, known variable\r
};\r
\r
extern EFI_GUID gEfiPeiReadOnlyVariablePpiGuid;\r