From 40038403ea4d148da0ff521eae3941bd2c1de353 Mon Sep 17 00:00:00 2001 From: jchen20 Date: Wed, 8 Jul 2009 09:38:08 +0000 Subject: [PATCH] to fill the gap between Framework and code to fix the bug #202405, #202419, #202418, #202435,#202437, #202439, #202440 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8817 6f19259b-4bc3-4df7-8a09-765794883524 --- IntelFrameworkPkg/Include/Framework/DxeCis.h | 97 +++++++++++++++++++ IntelFrameworkPkg/Include/Framework/PeiCis.h | 39 +++++++- .../Include/Ppi/ReadOnlyVariable.h | 5 +- 3 files changed, 137 insertions(+), 4 deletions(-) diff --git a/IntelFrameworkPkg/Include/Framework/DxeCis.h b/IntelFrameworkPkg/Include/Framework/DxeCis.h index 28582353bc..efc7ae807f 100644 --- a/IntelFrameworkPkg/Include/Framework/DxeCis.h +++ b/IntelFrameworkPkg/Include/Framework/DxeCis.h @@ -68,6 +68,103 @@ typedef struct { EFI_REPORT_STATUS_CODE ReportStatusCode; } FRAMEWORK_EFI_RUNTIME_SERVICES; +/// +/// Framework EFI Boot Services Table which comply with DxeCis spec. +/// +typedef struct { + /// + /// The table header for the EFI Boot Services Table. + /// + EFI_TABLE_HEADER Hdr; + + // + // Task Priority Services + // + EFI_RAISE_TPL RaiseTPL; + EFI_RESTORE_TPL RestoreTPL; + + // + // Memory Services + // + EFI_ALLOCATE_PAGES AllocatePages; + EFI_FREE_PAGES FreePages; + EFI_GET_MEMORY_MAP GetMemoryMap; + EFI_ALLOCATE_POOL AllocatePool; + EFI_FREE_POOL FreePool; + + // + // Event & Timer Services + // + EFI_CREATE_EVENT CreateEvent; + EFI_SET_TIMER SetTimer; + EFI_WAIT_FOR_EVENT WaitForEvent; + EFI_SIGNAL_EVENT SignalEvent; + EFI_CLOSE_EVENT CloseEvent; + EFI_CHECK_EVENT CheckEvent; + + // + // Protocol Handler Services + // + EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface; + EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface; + EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface; + EFI_HANDLE_PROTOCOL HandleProtocol; + EFI_HANDLE_PROTOCOL PcHandleProtocol; + EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify; + EFI_LOCATE_HANDLE LocateHandle; + EFI_LOCATE_DEVICE_PATH LocateDevicePath; + EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable; + + // + // Image Services + // + EFI_IMAGE_LOAD LoadImage; + EFI_IMAGE_START StartImage; + EFI_EXIT Exit; + EFI_IMAGE_UNLOAD UnloadImage; + EFI_EXIT_BOOT_SERVICES ExitBootServices; + + // + // Miscellaneous Services + // + EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount; + EFI_STALL Stall; + EFI_SET_WATCHDOG_TIMER SetWatchdogTimer; + + // + // DriverSupport Services + // + EFI_CONNECT_CONTROLLER ConnectController; + EFI_DISCONNECT_CONTROLLER DisconnectController; + + // + // Open and Close Protocol Services + // + EFI_OPEN_PROTOCOL OpenProtocol; + EFI_CLOSE_PROTOCOL CloseProtocol; + EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation; + + // + // Library Services + // + EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle; + EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer; + EFI_LOCATE_PROTOCOL LocateProtocol; + EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces; + EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces; + + // + // 32-bit CRC Services + // + EFI_CALCULATE_CRC32 CalculateCrc32; + + // + // Miscellaneous Services + // + EFI_COPY_MEM CopyMem; + EFI_SET_MEM SetMem; +} FRAMEWORK_EFI_BOOT_SERVICES; + #define EFI_EVENT_RUNTIME_CONTEXT 0x20000000 #define EFI_EVENT_NOTIFY_SIGNAL_ALL 0x00000400 #define EFI_EVENT_SIGNAL_READY_TO_BOOT 0x00000203 diff --git a/IntelFrameworkPkg/Include/Framework/PeiCis.h b/IntelFrameworkPkg/Include/Framework/PeiCis.h index 90a1a91f43..a50b1767e5 100644 --- a/IntelFrameworkPkg/Include/Framework/PeiCis.h +++ b/IntelFrameworkPkg/Include/Framework/PeiCis.h @@ -18,6 +18,24 @@ #include #include +// +// Framework PEI Specification Revision information +// +#define FRAMEWORK_PEI_SPECIFICATION_MAJOR_REVISION 0 +#define FRAMEWORK_PEI_SPECIFICATION_MINOR_REVISION 91 + +/// +/// Inconsistent with specification here: +/// In Framework Spec, PeiCis0.91, FRAMEWORK_PEI_SERVICES_SIGNATURE is defined as 0x5652455320494550. But +/// to pass multiple tool chain, it is append a ULL. +/// +// +// PEI services signature and Revision defined in Framework PEI spec +// +#define FRAMEWORK_PEI_SERVICES_SIGNATURE 0x5652455320494550ULL +#define FRAMEWORK_PEI_SERVICES_REVISION ((FRAMEWORK_PEI_SPECIFICATION_MAJOR_REVISION<<16) | (FRAMEWORK_PEI_SPECIFICATION_MINOR_REVISION)) + + typedef struct _FRAMEWORK_EFI_PEI_SERVICES FRAMEWORK_EFI_PEI_SERVICES; @@ -156,6 +174,7 @@ struct _FRAMEWORK_EFI_PEI_SERVICES { EFI_PEI_COPY_MEM CopyMem; EFI_PEI_SET_MEM SetMem; // + // (the following interfaces are installed by publishing PEIM) // Status Code // EFI_PEI_REPORT_STATUS_CODE ReportStatusCode; @@ -164,13 +183,29 @@ struct _FRAMEWORK_EFI_PEI_SERVICES { // EFI_PEI_RESET_SYSTEM ResetSystem; // - // (the following interfaces are installed by publishing PEIM) - // // I/O Abstractions // EFI_PEI_CPU_IO_PPI *CpuIo; EFI_PEI_PCI_CFG_PPI *PciCfg; }; +/// +/// Enumeration of reset types defined in Framework Spec PeiCis +/// +typedef enum { + /// + /// Used to induce a system-wide reset. This sets all circuitry within the + /// system to its initial state. This type of reset is asynchronous to system + /// operation and operates withgout regard to cycle boundaries. EfiColdReset + /// is tantamount to a system power cycle. + /// + EfiPeiResetCold, + /// + /// Used to induce a system-wide initialization. The processors are set to their + /// initial state, and pending cycles are not corrupted. If the system does + /// not support this reset type, then an EfiResetCold must be performed. + /// + EfiPeiResetWarm, +} EFI_PEI_RESET_TYPE; #endif diff --git a/IntelFrameworkPkg/Include/Ppi/ReadOnlyVariable.h b/IntelFrameworkPkg/Include/Ppi/ReadOnlyVariable.h index d03c933c4d..2a1b76ab26 100644 --- a/IntelFrameworkPkg/Include/Ppi/ReadOnlyVariable.h +++ b/IntelFrameworkPkg/Include/Ppi/ReadOnlyVariable.h @@ -37,6 +37,7 @@ typedef struct _EFI_PEI_READ_ONLY_VARIABLE_PPI EFI_PEI_READ_ONLY_VARIABLE_PPI; #define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002 #define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004 + /** Get Variable value by Name and GUID pair @@ -104,8 +105,8 @@ EFI_STATUS /// variable services. /// struct _EFI_PEI_READ_ONLY_VARIABLE_PPI { - EFI_PEI_GET_VARIABLE PeiGetVariable; ///< A service to ascertain a given variable name. - EFI_PEI_GET_NEXT_VARIABLE_NAME PeiGetNextVariableName; ///< A service to ascertain a variable based upon a given, known variable + EFI_PEI_GET_VARIABLE GetVariable; ///< A service to ascertain a given variable name. + EFI_PEI_GET_NEXT_VARIABLE_NAME GetNextVariableName; ///< A service to ascertain a variable based upon a given, known variable }; extern EFI_GUID gEfiPeiReadOnlyVariablePpiGuid; -- 2.39.2