13eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 23eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 33e99020dbf0a159e34b84e7ae9125f2e368d5390lgaoCopyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR> 42c7e5c2febd407ed1849c06da50734dd6f751956hhtianThis program and the accompanying materials 53eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangare licensed and made available under the terms and conditions of the BSD License 63eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangwhich accompanies this distribution. The full text of the license may be found at 73eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwanghttp://opensource.org/licenses/bsd-license.php 83eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 93eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangModule Name: 143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang RuntimeService.c 163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangAbstract: 183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Runtime Lib 203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2381c56b8d1a6b6c51d6ec68eea2cb3a7055ba8611qwang#include "../RuntimeLibInternal.h" 243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangVOID 263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFIAPI 273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEfiResetSystem ( 283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_RESET_TYPE ResetType, 293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_STATUS ResetStatus, 303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINTN DataSize, 313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN CHAR16 *ResetData 323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangRoutine Description: 363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Resets the entire platform. 383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangArguments: 403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ResetType - The type of reset to perform. 423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ResetStatus - The status code for the reset. 433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang DataSize - The size, in bytes, of ResetData. 443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ResetData - A data buffer that includes a Null-terminated Unicode string, optionally 453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang followed by additional binary data. 463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangReturns: 483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang None 503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{ 53c7f33ca42470dc87bc41a8583f427883123d67a1qwang EFI_GUID Guid; 54c7f33ca42470dc87bc41a8583f427883123d67a1qwang 55c7f33ca42470dc87bc41a8583f427883123d67a1qwang *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_RESET_SERVICES_PROTOCOL_GUID_LO; 56c7f33ca42470dc87bc41a8583f427883123d67a1qwang *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_RESET_SERVICES_PROTOCOL_GUID_HI; 573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiCallEsalService ( 593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang &Guid, 603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ResetSystem, 613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) ResetType, 623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) ResetStatus, 633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) DataSize, 643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) ResetData, 653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 0, 663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 0, 673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 0 683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ); 693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} 703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// 733e99020dbf0a159e34b84e7ae9125f2e368d5390lgao// The following functions hide the mRTEdkDxeRuntimeDriverLib local global from the call to 743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// runtime service in the EFI system table. 753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// 763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFIAPI 783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEfiGetTime ( 793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT EFI_TIME *Time, 803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT EFI_TIME_CAPABILITIES *Capabilities 813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangRoutine Description: 853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Returns the current time and date information, and the time-keeping 873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang capabilities of the hardware platform. 883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangArguments: 903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Time - A pointer to storage to receive a snapshot of the current time. 923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Capabilities - An optional pointer to a buffer to receive the real time clock device's 933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang capabilities. 943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangReturns: 963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Status code 983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 1003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{ 1013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang SAL_RETURN_REGS ReturnReg; 102c7f33ca42470dc87bc41a8583f427883123d67a1qwang EFI_GUID Guid; 103c7f33ca42470dc87bc41a8583f427883123d67a1qwang 104c7f33ca42470dc87bc41a8583f427883123d67a1qwang *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_LO; 105c7f33ca42470dc87bc41a8583f427883123d67a1qwang *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_HI; 1063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ReturnReg = EfiCallEsalService (&Guid, GetTime, (UINT64) Time, (UINT64) Capabilities, 0, 0, 0, 0, 0); 1083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang return ReturnReg.Status; 1093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} 1103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 1123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFIAPI 1133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEfiSetTime ( 1143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_TIME *Time 1153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 1163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 1173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangRoutine Description: 1193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Sets the current local time and date information. 1213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangArguments: 1233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Time - A pointer to the current time. 1253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangReturns: 1273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Status code 1293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 1313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{ 1323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang SAL_RETURN_REGS ReturnReg; 133c7f33ca42470dc87bc41a8583f427883123d67a1qwang EFI_GUID Guid; 134c7f33ca42470dc87bc41a8583f427883123d67a1qwang 135c7f33ca42470dc87bc41a8583f427883123d67a1qwang *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_LO; 136c7f33ca42470dc87bc41a8583f427883123d67a1qwang *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_HI; 1373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ReturnReg = EfiCallEsalService (&Guid, SetTime, (UINT64) Time, 0, 0, 0, 0, 0, 0); 1393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang return ReturnReg.Status; 1403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} 1413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 1433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFIAPI 1443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEfiGetWakeupTime ( 1453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT BOOLEAN *Enabled, 1463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT BOOLEAN *Pending, 1473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT EFI_TIME *Time 1483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 1493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 1503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangRoutine Description: 1523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Returns the current wakeup alarm clock setting. 1543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangArguments: 1563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Enabled - Indicates if the alarm is currently enabled or disabled. 1583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Pending - Indicates if the alarm signal is pending and requires acknowledgement. 1593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Time - The current alarm setting. 1603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangReturns: 1623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Status code 1643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 1663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{ 1673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang SAL_RETURN_REGS ReturnReg; 168c7f33ca42470dc87bc41a8583f427883123d67a1qwang EFI_GUID Guid; 169c7f33ca42470dc87bc41a8583f427883123d67a1qwang 170c7f33ca42470dc87bc41a8583f427883123d67a1qwang *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_LO; 171c7f33ca42470dc87bc41a8583f427883123d67a1qwang *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_HI; 1723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ReturnReg = EfiCallEsalService (&Guid, GetWakeupTime, (UINT64) Enabled, (UINT64) Pending, (UINT64) Time, 0, 0, 0, 0); 1743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang return ReturnReg.Status; 1753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} 1763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 1783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFIAPI 1793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEfiSetWakeupTime ( 1803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN BOOLEAN Enable, 1813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_TIME *Time 1823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 1833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 1843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangRoutine Description: 1863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Sets the system wakeup alarm clock time. 1883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangArguments: 1903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Enable - Enable or disable the wakeup alarm. 1923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Time - If Enable is TRUE, the time to set the wakeup alarm for. 1933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang If Enable is FALSE, then this parameter is optional, and may be NULL. 1943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangReturns: 1963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Status code 1983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 2003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{ 2013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang SAL_RETURN_REGS ReturnReg; 202c7f33ca42470dc87bc41a8583f427883123d67a1qwang EFI_GUID Guid; 203c7f33ca42470dc87bc41a8583f427883123d67a1qwang 204c7f33ca42470dc87bc41a8583f427883123d67a1qwang *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_LO; 205c7f33ca42470dc87bc41a8583f427883123d67a1qwang *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_HI; 2063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ReturnReg = EfiCallEsalService (&Guid, SetWakeupTime, (UINT64) Enable, (UINT64) Time, 0, 0, 0, 0, 0); 2083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang return ReturnReg.Status; 2093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} 2103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 2123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFIAPI 2133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEfiGetVariable ( 2143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN CHAR16 *VariableName, 2153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_GUID * VendorGuid, 2163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT UINT32 *Attributes OPTIONAL, 2173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN OUT UINTN *DataSize, 2183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT VOID *Data 2193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 2203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 2213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangRoutine Description: 2233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Returns the value of a variable. 2253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangArguments: 2273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang VariableName - A Null-terminated Unicode string that is the name of the 2293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang vendor's variable. 2303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang VendorGuid - A unique identifier for the vendor. 2313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Attributes - If not NULL, a pointer to the memory location to return the 2323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang attributes bitmask for the variable. 2333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang DataSize - On input, the size in bytes of the return Data buffer. 2343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang On output the size of data returned in Data. 2353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Data - The buffer to return the contents of the variable. 2363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangReturns: 2383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Status code 2403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 2423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{ 2433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang SAL_RETURN_REGS ReturnReg; 244c7f33ca42470dc87bc41a8583f427883123d67a1qwang EFI_GUID Guid; 245c7f33ca42470dc87bc41a8583f427883123d67a1qwang 246c7f33ca42470dc87bc41a8583f427883123d67a1qwang *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_LO; 247c7f33ca42470dc87bc41a8583f427883123d67a1qwang *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_HI; 2483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ReturnReg = EfiCallEsalService ( 2503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang &Guid, 2513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EsalGetVariable, 2523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) VariableName, 2533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) VendorGuid, 2543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) Attributes, 2553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) DataSize, 2563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) Data, 2573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 0, 2583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 0 2593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ); 2603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang return (EFI_STATUS) ReturnReg.Status; 2613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} 2623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 2643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFIAPI 2653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEfiGetNextVariableName ( 2663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN OUT UINTN *VariableNameSize, 2673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN OUT CHAR16 *VariableName, 2683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN OUT EFI_GUID *VendorGuid 2693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 2703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 2713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangRoutine Description: 2733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Enumerates the current variable names. 2753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangArguments: 2773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang VariableNameSize - The size of the VariableName buffer. 2793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang VariableName - On input, supplies the last VariableName that was returned 2803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang by GetNextVariableName(). 2813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang On output, returns the Nullterminated Unicode string of the 2823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang current variable. 2833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang VendorGuid - On input, supplies the last VendorGuid that was returned by 2843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang GetNextVariableName(). 2853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang On output, returns the VendorGuid of the current variable. 2863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangReturns: 2883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Status code 2903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 2923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{ 2933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang SAL_RETURN_REGS ReturnReg; 294c7f33ca42470dc87bc41a8583f427883123d67a1qwang EFI_GUID Guid; 295c7f33ca42470dc87bc41a8583f427883123d67a1qwang 296c7f33ca42470dc87bc41a8583f427883123d67a1qwang *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_LO; 297c7f33ca42470dc87bc41a8583f427883123d67a1qwang *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_HI; 2983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ReturnReg = EfiCallEsalService ( 3003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang &Guid, 3013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EsalGetNextVariableName, 3023eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) VariableNameSize, 3033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) VariableName, 3043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) VendorGuid, 3053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 0, 3063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 0, 3073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 0, 3083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 0 3093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ); 3103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang return (EFI_STATUS) ReturnReg.Status; 3113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} 3123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 3143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFIAPI 3153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEfiSetVariable ( 3163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN CHAR16 *VariableName, 3173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_GUID *VendorGuid, 3183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINT32 Attributes, 3193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINTN DataSize, 3203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN VOID *Data 3213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 3223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 3233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangRoutine Description: 3253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Sets the value of a variable. 3273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangArguments: 3293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang VariableName - A Null-terminated Unicode string that is the name of the 3313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang vendor's variable. 3323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang VendorGuid - A unique identifier for the vendor. 3333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Attributes - Attributes bitmask to set for the variable. 3343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang DataSize - The size in bytes of the Data buffer. 3353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Data - The contents for the variable. 3363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangReturns: 3383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Status code 3403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 3423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{ 3433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang SAL_RETURN_REGS ReturnReg; 344c7f33ca42470dc87bc41a8583f427883123d67a1qwang EFI_GUID Guid; 345c7f33ca42470dc87bc41a8583f427883123d67a1qwang 346c7f33ca42470dc87bc41a8583f427883123d67a1qwang *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_LO; 347c7f33ca42470dc87bc41a8583f427883123d67a1qwang *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_HI; 3483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ReturnReg = EfiCallEsalService ( 3503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang &Guid, 3513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EsalSetVariable, 3523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) VariableName, 3533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) VendorGuid, 3543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) Attributes, 3553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) DataSize, 3563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) Data, 3573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 0, 3583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 0 3593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ); 3603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang return (EFI_STATUS) ReturnReg.Status; 3613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} 3623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 3643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFIAPI 3653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEfiGetNextHighMonotonicCount ( 3663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT UINT32 *HighCount 3673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 3683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 3693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangRoutine Description: 3713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Returns the next high 32 bits of the platform's monotonic counter. 3733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangArguments: 3753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang HighCount - Pointer to returned value. 3773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangReturns: 3793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Status code 3813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 3833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{ 3843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang SAL_RETURN_REGS ReturnReg; 385c7f33ca42470dc87bc41a8583f427883123d67a1qwang EFI_GUID Guid; 386c7f33ca42470dc87bc41a8583f427883123d67a1qwang 387c7f33ca42470dc87bc41a8583f427883123d67a1qwang *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_MTC_SERVICES_PROTOCOL_GUID_LO; 388c7f33ca42470dc87bc41a8583f427883123d67a1qwang *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_MTC_SERVICES_PROTOCOL_GUID_HI; 3893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ReturnReg = EfiCallEsalService (&Guid, GetNextHighMonotonicCount, (UINT64) HighCount, 0, 0, 0, 0, 0, 0); 3913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang return (EFI_STATUS) ReturnReg.Status; 3923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} 3933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 3953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFIAPI 3963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEfiConvertPointer ( 3973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINTN DebugDisposition, 3983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN OUT VOID **Address 3993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 4003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 4013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4023eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangRoutine Description: 4033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Determines the new virtual address that is to be used on subsequent memory accesses. 4053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangArguments: 4073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang DebugDisposition - Supplies type information for the pointer being converted. 4093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Address - A pointer to a pointer that is to be fixed to be the value needed 4103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang for the new virtual address mappings being applied. 4113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangReturns: 4133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Status code 4153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 4173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{ 4183e99020dbf0a159e34b84e7ae9125f2e368d5390lgao return mRTEdkDxeRuntimeDriverLib->ConvertPointer (DebugDisposition, Address); 4193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} 4203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 4223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFIAPI 4233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEfiConvertList ( 4243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINTN DebugDisposition, 4253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN OUT LIST_ENTRY *ListHead 4263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 4273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 4283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangRoutine Description: 4303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Conver the standard Lib double linked list to a virtual mapping. 4323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangArguments: 4343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang DebugDisposition - Argument to EfiConvertPointer (EFI 1.0 API) 4363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ListHead - Head of linked list to convert 4383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangReturns: 4403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SUCCESS 4423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 4443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{ 4453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang LIST_ENTRY *Link; 4463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang LIST_ENTRY *NextLink; 4473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang // 4493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang // Convert all the ForwardLink & BackLink pointers in the list 4503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang // 4513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Link = ListHead; 4523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang do { 4533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang NextLink = Link->ForwardLink; 4543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiConvertPointer ( 4563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Link->ForwardLink == ListHead ? DebugDisposition : 0, 4573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (VOID **) &Link->ForwardLink 4583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ); 4593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiConvertPointer ( 4613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Link->BackLink == ListHead ? DebugDisposition : 0, 4623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (VOID **) &Link->BackLink 4633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ); 4643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Link = NextLink; 4663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang } while (Link != ListHead); 4673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang return EFI_SUCCESS; 4683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} 4693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/** 4723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Change the runtime addressing mode of EFI firmware from physical to virtual. 4733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang @param MemoryMapSize The size in bytes of VirtualMap. 4753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang @param DescriptorSize The size in bytes of an entry in the VirtualMap. 4763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang @param DescriptorVersion The version of the structure entries in VirtualMap. 4773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang @param VirtualMap An array of memory descriptors which contain new virtual 4783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang address mapping information for all runtime ranges. Type 4793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_MEMORY_DESCRIPTOR is defined in the 4803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang GetMemoryMap() function description. 4813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 4823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang @retval EFI_SUCCESS The virtual address map has been applied. 4833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang @retval EFI_UNSUPPORTED EFI firmware is not at runtime, or the EFI firmware is already in 4843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang virtual address mapped mode. 4853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang @retval EFI_INVALID_PARAMETER DescriptorSize or DescriptorVersion is 4863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang invalid. 4873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang @retval EFI_NO_MAPPING A virtual address was not supplied for a range in the memory 4883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang map that requires a mapping. 4893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang @retval EFI_NOT_FOUND A virtual address was supplied for an address that is not found 4903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang in the memory map. 4913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang**/ 4923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 4933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFIAPI 4943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEfiSetVirtualAddressMap ( 4953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINTN MemoryMapSize, 4963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINTN DescriptorSize, 4973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINT32 DescriptorVersion, 4983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN CONST EFI_MEMORY_DESCRIPTOR *VirtualMap 4993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 5003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{ 5013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang SAL_RETURN_REGS ReturnReg; 502c7f33ca42470dc87bc41a8583f427883123d67a1qwang EFI_GUID Guid; 503c7f33ca42470dc87bc41a8583f427883123d67a1qwang 504c7f33ca42470dc87bc41a8583f427883123d67a1qwang *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID_LO; 505c7f33ca42470dc87bc41a8583f427883123d67a1qwang *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID_HI; 5063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 5073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ReturnReg = EfiCallEsalService ( 5083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang &Guid, 5093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang SetVirtualAddress, 5103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) MemoryMapSize, 5113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) DescriptorSize, 5123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) DescriptorVersion, 5133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) VirtualMap, 5143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 0, 5153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 0, 5163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 0 5173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ); 5183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 5193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang return ReturnReg.Status; 5203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} 5213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 5223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 5233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 5243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFIAPI 5253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEfiUpdateCapsule ( 5263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UEFI_CAPSULE_HEADER **CapsuleHeaderArray, 5273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINTN CapsuleCount, 5283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_PHYSICAL_ADDRESS ScatterGatherList OPTIONAL 5293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 5303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{ 5313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang return EFI_UNSUPPORTED; 5323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} 5333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 5343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 5353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFIAPI 5363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEfiQueryCapsuleCapabilities ( 5373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UEFI_CAPSULE_HEADER **CapsuleHeaderArray, 5383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINTN CapsuleCount, 5393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT UINT64 *MaximumCapsuleSize, 5403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT EFI_RESET_TYPE *ResetType 5413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 5423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{ 5433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang return EFI_UNSUPPORTED; 5443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} 5453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 5463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 5473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 5483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFIAPI 5493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEfiQueryVariableInfo ( 5503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINT32 Attributes, 5513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT UINT64 *MaximumVariableStorageSize, 5523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT UINT64 *RemainingVariableStorageSize, 5533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT UINT64 *MaximumVariableSize 5543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 5553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{ 5563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang return EFI_UNSUPPORTED; 5573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} 558