+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2006, Intel Corporation \r
-All rights reserved. This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-Module Name:\r
-\r
- RuntimeService.c\r
-\r
---*/\r
-\r
-#include <RuntimeLibInternal.h>\r
-\r
-VOID\r
-EFIAPI\r
-EfiResetSystem (\r
- IN EFI_RESET_TYPE ResetType,\r
- IN EFI_STATUS ResetStatus,\r
- IN UINTN DataSize,\r
- IN CHAR16 *ResetData\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Resets the entire platform.\r
-\r
-Arguments:\r
-\r
- ResetType - The type of reset to perform.\r
- ResetStatus - The status code for the reset.\r
- DataSize - The size, in bytes, of ResetData.\r
- ResetData - A data buffer that includes a Null-terminated Unicode string, optionally\r
- followed by additional binary data.\r
-\r
-Returns:\r
-\r
- None\r
-\r
---*/\r
-{\r
- EFI_GUID Guid;\r
-\r
- *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_RESET_SERVICES_PROTOCOL_GUID_LO;\r
- *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_RESET_SERVICES_PROTOCOL_GUID_HI;\r
-\r
- EsalCall (\r
- &Guid,\r
- ResetSystemFunctionId,\r
- (UINT64) ResetType,\r
- (UINT64) ResetStatus,\r
- (UINT64) DataSize,\r
- (UINT64) ResetData,\r
- 0,\r
- 0,\r
- 0\r
- );\r
-}\r
-\r
-\r
-//\r
-// The following functions hide the mRT local global from the call to\r
-// runtime service in the EFI system table.\r
-//\r
-EFI_STATUS\r
-EFIAPI\r
-EfiGetTime (\r
- OUT EFI_TIME *Time,\r
- OUT EFI_TIME_CAPABILITIES *Capabilities\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Returns the current time and date information, and the time-keeping \r
- capabilities of the hardware platform.\r
-\r
-Arguments:\r
-\r
- Time - A pointer to storage to receive a snapshot of the current time.\r
- Capabilities - An optional pointer to a buffer to receive the real time clock device's\r
- capabilities.\r
-\r
-Returns:\r
-\r
- Status code\r
-\r
---*/\r
-{\r
- SAL_RETURN_REGS ReturnReg;\r
- EFI_GUID Guid;\r
-\r
- *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_LO;\r
- *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_HI;\r
-\r
- ReturnReg = EsalCall (&Guid, GetTimeFunctionId, (UINT64) Time, (UINT64) Capabilities, 0, 0, 0, 0, 0);\r
- return ReturnReg.Status;\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EfiSetTime (\r
- IN EFI_TIME *Time\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Sets the current local time and date information.\r
-\r
-Arguments:\r
-\r
- Time - A pointer to the current time.\r
-\r
-Returns:\r
-\r
- Status code\r
-\r
---*/\r
-{\r
- SAL_RETURN_REGS ReturnReg;\r
- EFI_GUID Guid;\r
-\r
- *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_LO;\r
- *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_HI;\r
-\r
- ReturnReg = EsalCall (&Guid, SetTimeFunctionId, (UINT64) Time, 0, 0, 0, 0, 0, 0);\r
- return ReturnReg.Status;\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EfiGetWakeupTime (\r
- OUT BOOLEAN *Enabled,\r
- OUT BOOLEAN *Pending,\r
- OUT EFI_TIME *Time\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Returns the current wakeup alarm clock setting.\r
-\r
-Arguments:\r
-\r
- Enabled - Indicates if the alarm is currently enabled or disabled.\r
- Pending - Indicates if the alarm signal is pending and requires acknowledgement.\r
- Time - The current alarm setting.\r
-\r
-Returns:\r
-\r
- Status code\r
-\r
---*/\r
-{\r
- SAL_RETURN_REGS ReturnReg;\r
- EFI_GUID Guid;\r
-\r
- *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_LO;\r
- *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_HI;\r
-\r
- ReturnReg = EsalCall (&Guid, GetWakeupTimeFunctionId, (UINT64) Enabled, (UINT64) Pending, (UINT64) Time, 0, 0, 0, 0);\r
- return ReturnReg.Status;\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EfiSetWakeupTime (\r
- IN BOOLEAN Enable,\r
- IN EFI_TIME *Time\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Sets the system wakeup alarm clock time.\r
-\r
-Arguments:\r
-\r
- Enable - Enable or disable the wakeup alarm.\r
- Time - If Enable is TRUE, the time to set the wakeup alarm for.\r
- If Enable is FALSE, then this parameter is optional, and may be NULL.\r
-\r
-Returns:\r
-\r
- Status code\r
-\r
---*/\r
-{\r
- SAL_RETURN_REGS ReturnReg;\r
- EFI_GUID Guid;\r
-\r
- *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_LO;\r
- *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_HI;\r
-\r
- ReturnReg = EsalCall (&Guid, SetWakeupTimeFunctionId, (UINT64) Enable, (UINT64) Time, 0, 0, 0, 0, 0);\r
- return ReturnReg.Status;\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EfiGetVariable (\r
- IN CHAR16 *VariableName,\r
- IN EFI_GUID * VendorGuid,\r
- OUT UINT32 *Attributes OPTIONAL,\r
- IN OUT UINTN *DataSize,\r
- OUT VOID *Data\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Returns the value of a variable.\r
-\r
-Arguments:\r
-\r
- VariableName - A Null-terminated Unicode string that is the name of the\r
- vendor's variable.\r
- VendorGuid - A unique identifier for the vendor.\r
- Attributes - If not NULL, a pointer to the memory location to return the\r
- attributes bitmask for the variable.\r
- DataSize - On input, the size in bytes of the return Data buffer.\r
- On output the size of data returned in Data.\r
- Data - The buffer to return the contents of the variable.\r
-\r
-Returns:\r
-\r
- Status code\r
-\r
---*/\r
-{\r
- SAL_RETURN_REGS ReturnReg;\r
- EFI_GUID Guid;\r
-\r
- *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_LO;\r
- *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_HI;\r
-\r
- ReturnReg = EsalCall (\r
- &Guid,\r
- EsalGetVariableFunctionId,\r
- (UINT64) VariableName,\r
- (UINT64) VendorGuid,\r
- (UINT64) Attributes,\r
- (UINT64) DataSize,\r
- (UINT64) Data,\r
- 0,\r
- 0\r
- );\r
- return (EFI_STATUS) ReturnReg.Status;\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EfiGetNextVariableName (\r
- IN OUT UINTN *VariableNameSize,\r
- IN OUT CHAR16 *VariableName,\r
- IN OUT EFI_GUID *VendorGuid\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Enumerates the current variable names.\r
-\r
-Arguments:\r
-\r
- VariableNameSize - The size of the VariableName buffer.\r
- VariableName - On input, supplies the last VariableName that was returned\r
- by GetNextVariableName(). \r
- On output, returns the Nullterminated Unicode string of the\r
- current variable.\r
- VendorGuid - On input, supplies the last VendorGuid that was returned by\r
- GetNextVariableName(). \r
- On output, returns the VendorGuid of the current variable.\r
-\r
-Returns:\r
-\r
- Status code\r
-\r
---*/\r
-{\r
- SAL_RETURN_REGS ReturnReg;\r
- EFI_GUID Guid;\r
-\r
- *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_LO;\r
- *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_HI;\r
-\r
- ReturnReg = EsalCall (\r
- &Guid,\r
- EsalGetNextVariableNameFunctionId,\r
- (UINT64) VariableNameSize,\r
- (UINT64) VariableName,\r
- (UINT64) VendorGuid,\r
- 0,\r
- 0,\r
- 0,\r
- 0\r
- );\r
- return (EFI_STATUS) ReturnReg.Status;\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EfiSetVariable (\r
- IN CHAR16 *VariableName,\r
- IN EFI_GUID *VendorGuid,\r
- IN UINT32 Attributes,\r
- IN UINTN DataSize,\r
- IN VOID *Data\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Sets the value of a variable.\r
-\r
-Arguments:\r
-\r
- VariableName - A Null-terminated Unicode string that is the name of the\r
- vendor's variable.\r
- VendorGuid - A unique identifier for the vendor.\r
- Attributes - Attributes bitmask to set for the variable.\r
- DataSize - The size in bytes of the Data buffer.\r
- Data - The contents for the variable.\r
-\r
-Returns:\r
-\r
- Status code\r
-\r
---*/\r
-{\r
- SAL_RETURN_REGS ReturnReg;\r
- EFI_GUID Guid;\r
-\r
- *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_LO;\r
- *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_HI;\r
-\r
- ReturnReg = EsalCall (\r
- &Guid,\r
- EsalSetVariableFunctionId,\r
- (UINT64) VariableName,\r
- (UINT64) VendorGuid,\r
- (UINT64) Attributes,\r
- (UINT64) DataSize,\r
- (UINT64) Data,\r
- 0,\r
- 0\r
- );\r
- return (EFI_STATUS) ReturnReg.Status;\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EfiGetNextHighMonotonicCount (\r
- OUT UINT32 *HighCount\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Returns the next high 32 bits of the platform's monotonic counter.\r
-\r
-Arguments:\r
-\r
- HighCount - Pointer to returned value.\r
-\r
-Returns:\r
-\r
- Status code\r
-\r
---*/\r
-{\r
- SAL_RETURN_REGS ReturnReg;\r
- EFI_GUID Guid;\r
-\r
- *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_MTC_SERVICES_PROTOCOL_GUID_LO;\r
- *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_MTC_SERVICES_PROTOCOL_GUID_HI;\r
-\r
- ReturnReg = EsalCall (&Guid, GetNextHighMonotonicCountFunctionId, (UINT64) HighCount, 0, 0, 0, 0, 0, 0);\r
- return (EFI_STATUS) ReturnReg.Status;\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EfiConvertPointer (\r
- IN UINTN DebugDisposition,\r
- IN OUT VOID **Address\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Determines the new virtual address that is to be used on subsequent memory accesses.\r
-\r
-Arguments:\r
-\r
- DebugDisposition - Supplies type information for the pointer being converted.\r
- Address - A pointer to a pointer that is to be fixed to be the value needed\r
- for the new virtual address mappings being applied.\r
-\r
-Returns:\r
-\r
- Status code\r
-\r
---*/\r
-{\r
- return mRT->ConvertPointer (DebugDisposition, Address);\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EfiConvertList (\r
- IN UINTN DebugDisposition,\r
- IN OUT LIST_ENTRY *ListHead\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Conver the standard Lib double linked list to a virtual mapping.\r
-\r
-Arguments:\r
-\r
- DebugDisposition - Argument to EfiConvertPointer (EFI 1.0 API)\r
-\r
- ListHead - Head of linked list to convert\r
-\r
-Returns: \r
-\r
- EFI_SUCCESS\r
-\r
---*/\r
-{\r
- LIST_ENTRY *Link;\r
- LIST_ENTRY *NextLink;\r
-\r
- //\r
- // Convert all the ForwardLink & BackLink pointers in the list\r
- //\r
- Link = ListHead;\r
- do {\r
- NextLink = Link->ForwardLink;\r
-\r
- EfiConvertPointer (\r
- Link->ForwardLink == ListHead ? DebugDisposition : 0,\r
- (VOID **) &Link->ForwardLink\r
- );\r
-\r
- EfiConvertPointer (\r
- Link->BackLink == ListHead ? DebugDisposition : 0,\r
- (VOID **) &Link->BackLink\r
- );\r
-\r
- Link = NextLink;\r
- } while (Link != ListHead);\r
- return EFI_SUCCESS;\r
-}\r
-\r
-\r
-/**\r
- Change the runtime addressing mode of EFI firmware from physical to virtual.\r
-\r
- @param MemoryMapSize The size in bytes of VirtualMap.\r
- @param DescriptorSize The size in bytes of an entry in the VirtualMap.\r
- @param DescriptorVersion The version of the structure entries in VirtualMap.\r
- @param VirtualMap An array of memory descriptors which contain new virtual\r
- address mapping information for all runtime ranges. Type\r
- EFI_MEMORY_DESCRIPTOR is defined in the\r
- GetMemoryMap() function description.\r
-\r
- @retval EFI_SUCCESS The virtual address map has been applied.\r
- @retval EFI_UNSUPPORTED EFI firmware is not at runtime, or the EFI firmware is already in\r
- virtual address mapped mode.\r
- @retval EFI_INVALID_PARAMETER DescriptorSize or DescriptorVersion is\r
- invalid.\r
- @retval EFI_NO_MAPPING A virtual address was not supplied for a range in the memory\r
- map that requires a mapping.\r
- @retval EFI_NOT_FOUND A virtual address was supplied for an address that is not found\r
- in the memory map.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiSetVirtualAddressMap (\r
- IN UINTN MemoryMapSize,\r
- IN UINTN DescriptorSize,\r
- IN UINT32 DescriptorVersion,\r
- IN CONST EFI_MEMORY_DESCRIPTOR *VirtualMap\r
- )\r
-{\r
- SAL_RETURN_REGS ReturnReg;\r
- EFI_GUID Guid;\r
-\r
- *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID_LO;\r
- *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID_HI;\r
-\r
- ReturnReg = EsalCall (\r
- &Guid,\r
- SetVirtualAddressFunctionId,\r
- (UINT64) MemoryMapSize,\r
- (UINT64) DescriptorSize,\r
- (UINT64) DescriptorVersion,\r
- (UINT64) VirtualMap,\r
- 0,\r
- 0,\r
- 0\r
- );\r
-\r
- return ReturnReg.Status;\r
-}\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EfiUpdateCapsule (\r
- IN UEFI_CAPSULE_HEADER **CapsuleHeaderArray,\r
- IN UINTN CapsuleCount,\r
- IN EFI_PHYSICAL_ADDRESS ScatterGatherList OPTIONAL\r
- )\r
-{\r
- return EFI_UNSUPPORTED;\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EfiQueryCapsuleCapabilities (\r
- IN UEFI_CAPSULE_HEADER **CapsuleHeaderArray,\r
- IN UINTN CapsuleCount,\r
- OUT UINT64 *MaximumCapsuleSize,\r
- OUT EFI_RESET_TYPE *ResetType\r
- )\r
-{\r
- return EFI_UNSUPPORTED;\r
-}\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EfiQueryVariableInfo (\r
- IN UINT32 Attributes,\r
- OUT UINT64 *MaximumVariableStorageSize,\r
- OUT UINT64 *RemainingVariableStorageSize,\r
- OUT UINT64 *MaximumVariableSize\r
- )\r
-{\r
- return EFI_UNSUPPORTED;\r
-}\r