X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EdkModulePkg%2FLibrary%2FEdkUefiRuntimeLib%2FIpf%2FRuntimeLib.c;h=65ec0a418b6ed2b13f8b1909ebd32c26def24112;hp=9fa1d1610d4845873024d1360eba01a4be08f4de;hb=188fe5e85d7c122cd59781ec6dff3da687b5ccca;hpb=f9081b646d7748e4a035ef736c13a92bc8d9681b diff --git a/EdkModulePkg/Library/EdkUefiRuntimeLib/Ipf/RuntimeLib.c b/EdkModulePkg/Library/EdkUefiRuntimeLib/Ipf/RuntimeLib.c index 9fa1d1610d..65ec0a418b 100644 --- a/EdkModulePkg/Library/EdkUefiRuntimeLib/Ipf/RuntimeLib.c +++ b/EdkModulePkg/Library/EdkUefiRuntimeLib/Ipf/RuntimeLib.c @@ -1,13 +1,13 @@ /*++ -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. Module Name: @@ -38,10 +38,10 @@ Routine Description: Arguments: Event - The Event that is being processed - + Context - Event Context -Returns: +Returns: None @@ -52,6 +52,7 @@ Returns: } } +STATIC VOID EFIAPI RuntimeLibVirtualNotifyEvent ( @@ -63,16 +64,16 @@ RuntimeLibVirtualNotifyEvent ( Routine Description: Fixup internal data so that EFI can be call in virtual mode. - Call the passed in Child Notify event and convert any pointers in + Call the passed in Child Notify event and convert any pointers in lib to virtual mode. Arguments: Event - The Event that is being processed - + Context - Event Context -Returns: +Returns: None @@ -102,12 +103,12 @@ RuntimeDriverLibConstruct ( Routine Description: - Intialize runtime Driver Lib if it has not yet been initialized. + Intialize runtime Driver Lib if it has not yet been initialized. Arguments: ImageHandle - The firmware allocated handle for the EFI image. - + SystemTable - A pointer to the EFI System Table. GoVirtualChildEvent - Caller can register a virtual notification event. @@ -127,8 +128,8 @@ Returns: // if (_gDriverSetVirtualAddressMapEvent[0] != NULL) { Status = gBS->CreateEvent ( - EFI_EVENT_SIGNAL_VIRTUAL_ADDRESS_CHANGE, - EFI_TPL_NOTIFY, + EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE, + TPL_NOTIFY, RuntimeLibVirtualNotifyEvent, NULL, &mEfiVirtualNotifyEvent @@ -150,14 +151,14 @@ RuntimeDriverLibDeconstruct ( Routine Description: This routine will free some resources which have been allocated in - EfiInitializeRuntimeDriverLib(). If a runtime driver exits with an error, + EfiInitializeRuntimeDriverLib(). If a runtime driver exits with an error, it must call this routine to free the allocated resource before the exiting. Arguments: None -Returns: +Returns: EFI_SUCCESS - Shotdown the Runtime Driver Lib successfully EFI_UNSUPPORTED - Runtime Driver lib was not initialized at all @@ -190,15 +191,18 @@ Routine Description: Arguments: NONE -Returns: +Returns: TRUE - If ExitBootService () has been called --*/ { - EFI_GUID Guid = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID; + EFI_GUID Guid; SAL_RETURN_REGS ReturnReg; - ReturnReg = EfiCallEsalService (&Guid, IsEfiRuntime, 0, 0, 0, 0, 0, 0, 0); + *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID_LO; + *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID_HI; + + ReturnReg = EsalCall (&Guid, IsEfiRuntime, 0, 0, 0, 0, 0, 0, 0); return (BOOLEAN) (ReturnReg.r9 == 1); } @@ -216,15 +220,18 @@ Routine Description: Arguments: NONE -Returns: +Returns: TRUE - If SetVirtualAddressMap () has been called --*/ { - EFI_GUID Guid = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID; + EFI_GUID Guid; SAL_RETURN_REGS ReturnReg; - ReturnReg = EfiCallEsalService (&Guid, IsVirtual, 0, 0, 0, 0, 0, 0, 0); + *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID_LO; + *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID_HI; + + ReturnReg = EsalCall (&Guid, IsVirtual, 0, 0, 0, 0, 0, 0, 0); return (BOOLEAN) (ReturnReg.r9 == 1); }