]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/RuntimeDxe/Runtime.c
MdeModulePkg: Apply uncrustify changes
[mirror_edk2.git] / MdeModulePkg / Core / RuntimeDxe / Runtime.c
index 89731e0cd8731f0e49ce00197b73828709ede75f..2a541408731db565bb63081ee51da7d090082421 100644 (file)
@@ -35,14 +35,8 @@ Revision History:
   Table now contains an item named CalculateCrc32.\r
 \r
 \r
-Copyright (c) 2006 - 2010, Intel Corporation. <BR>\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
+Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -51,20 +45,20 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 //\r
 // Global Variables\r
 //\r
-EFI_MEMORY_DESCRIPTOR         *mVirtualMap                = NULL;\r
-UINTN                         mVirtualMapDescriptorSize;\r
-UINTN                         mVirtualMapMaxIndex;\r
-VOID                          *mMyImageBase;\r
+EFI_MEMORY_DESCRIPTOR  *mVirtualMap = NULL;\r
+UINTN                  mVirtualMapDescriptorSize;\r
+UINTN                  mVirtualMapMaxIndex;\r
+VOID                   *mMyImageBase;\r
 \r
 //\r
 // The handle onto which the Runtime Architectural Protocol instance is installed\r
 //\r
-EFI_HANDLE                    mRuntimeHandle = NULL;\r
+EFI_HANDLE  mRuntimeHandle = NULL;\r
 \r
 //\r
 // The Runtime Architectural Protocol instance produced by this driver\r
 //\r
-EFI_RUNTIME_ARCH_PROTOCOL     mRuntime = {\r
+EFI_RUNTIME_ARCH_PROTOCOL  mRuntime = {\r
   INITIALIZE_LIST_HEAD_VARIABLE (mRuntime.ImageHead),\r
   INITIALIZE_LIST_HEAD_VARIABLE (mRuntime.EventHead),\r
 \r
@@ -85,6 +79,7 @@ EFI_RUNTIME_ARCH_PROTOCOL     mRuntime = {
 //\r
 // Worker Functions\r
 //\r
+\r
 /**\r
 \r
   Calculate the 32-bit CRC in a EFI table using the Runtime Drivers\r
@@ -103,10 +98,10 @@ RuntimeDriverCalculateEfiHdrCrc (
 {\r
   UINT32  Crc;\r
 \r
-  Hdr->CRC32  = 0;\r
+  Hdr->CRC32 = 0;\r
 \r
-  Crc         = 0;\r
-  RuntimeDriverCalculateCrc32 ((UINT8 *) Hdr, Hdr->HeaderSize, &Crc);\r
+  Crc = 0;\r
+  RuntimeDriverCalculateCrc32 ((UINT8 *)Hdr, Hdr->HeaderSize, &Crc);\r
   Hdr->CRC32 = Crc;\r
 }\r
 \r
@@ -132,10 +127,10 @@ RuntimeDriverConvertPointer (
   IN OUT VOID   **ConvertAddress\r
   )\r
 {\r
-  UINTN                 Address;\r
-  UINT64                VirtEndOfRange;\r
-  EFI_MEMORY_DESCRIPTOR *VirtEntry;\r
-  UINTN                 Index;\r
+  UINTN                  Address;\r
+  UINT64                 VirtEndOfRange;\r
+  EFI_MEMORY_DESCRIPTOR  *VirtEntry;\r
+  UINTN                  Index;\r
 \r
   //\r
   // Make sure ConvertAddress is a valid pointer\r
@@ -143,10 +138,11 @@ RuntimeDriverConvertPointer (
   if (ConvertAddress == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
   //\r
   // Get the address to convert\r
   //\r
-  Address = (UINTN) *ConvertAddress;\r
+  Address = (UINTN)*ConvertAddress;\r
 \r
   //\r
   // If this is a null pointer, return if it's allowed\r
@@ -167,16 +163,16 @@ RuntimeDriverConvertPointer (
     //  platforms. If you get this ASSERT remove the UINTN and do a 64-bit\r
     //  multiply.\r
     //\r
-    ASSERT (((UINTN) VirtEntry->NumberOfPages < 0xffffffff) || (sizeof (UINTN) > 4));\r
+    ASSERT (((UINTN)VirtEntry->NumberOfPages < 0xffffffff) || (sizeof (UINTN) > 4));\r
 \r
     if ((VirtEntry->Attribute & EFI_MEMORY_RUNTIME) == EFI_MEMORY_RUNTIME) {\r
       if (Address >= VirtEntry->PhysicalStart) {\r
-        VirtEndOfRange = VirtEntry->PhysicalStart + (((UINTN) VirtEntry->NumberOfPages) * EFI_PAGE_SIZE);\r
+        VirtEndOfRange = VirtEntry->PhysicalStart + (((UINTN)VirtEntry->NumberOfPages) * EFI_PAGE_SIZE);\r
         if (Address < VirtEndOfRange) {\r
           //\r
           // Compute new address\r
           //\r
-          *ConvertAddress = (VOID *) (Address - (UINTN) VirtEntry->PhysicalStart + (UINTN) VirtEntry->VirtualStart);\r
+          *ConvertAddress = (VOID *)(Address - (UINTN)VirtEntry->PhysicalStart + (UINTN)VirtEntry->VirtualStart);\r
           return EFI_SUCCESS;\r
         }\r
       }\r
@@ -206,7 +202,7 @@ RuntimeDriverConvertPointer (
 **/\r
 EFI_STATUS\r
 RuntimeDriverConvertInternalPointer (\r
-  IN OUT VOID   **ConvertAddress\r
+  IN OUT VOID  **ConvertAddress\r
   )\r
 {\r
   return RuntimeDriverConvertPointer (0x0, ConvertAddress);\r
@@ -242,11 +238,11 @@ RuntimeDriverSetVirtualAddressMap (
   IN EFI_MEMORY_DESCRIPTOR  *VirtualMap\r
   )\r
 {\r
-  EFI_STATUS                    Status;\r
-  EFI_RUNTIME_EVENT_ENTRY       *RuntimeEvent;\r
-  EFI_RUNTIME_IMAGE_ENTRY       *RuntimeImage;\r
-  LIST_ENTRY                    *Link;\r
-  EFI_PHYSICAL_ADDRESS          VirtImageBase;\r
+  EFI_STATUS               Status;\r
+  EFI_RUNTIME_EVENT_ENTRY  *RuntimeEvent;\r
+  EFI_RUNTIME_IMAGE_ENTRY  *RuntimeImage;\r
+  LIST_ENTRY               *Link;\r
+  EFI_PHYSICAL_ADDRESS     VirtImageBase;\r
 \r
   //\r
   // Can only switch to virtual addresses once the memory map is locked down,\r
@@ -255,12 +251,14 @@ RuntimeDriverSetVirtualAddressMap (
   if (!mRuntime.AtRuntime || mRuntime.VirtualMode) {\r
     return EFI_UNSUPPORTED;\r
   }\r
+\r
   //\r
   // Only understand the original descriptor format\r
   //\r
-  if (DescriptorVersion != EFI_MEMORY_DESCRIPTOR_VERSION || DescriptorSize < sizeof (EFI_MEMORY_DESCRIPTOR)) {\r
+  if ((DescriptorVersion != EFI_MEMORY_DESCRIPTOR_VERSION) || (DescriptorSize < sizeof (EFI_MEMORY_DESCRIPTOR))) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
   //\r
   // We are now committed to go to virtual mode, so lets get to it!\r
   //\r
@@ -279,6 +277,11 @@ RuntimeDriverSetVirtualAddressMap (
   //\r
   REPORT_STATUS_CODE (EFI_PROGRESS_CODE, (EFI_SOFTWARE_EFI_RUNTIME_SERVICE | EFI_SW_RS_PC_SET_VIRTUAL_ADDRESS_MAP));\r
 \r
+  //\r
+  // Report Status Code here since EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE event will be signalled.\r
+  //\r
+  REPORT_STATUS_CODE (EFI_PROGRESS_CODE, (EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_DXE_BS_PC_VIRTUAL_ADDRESS_CHANGE_EVENT));\r
+\r
   //\r
   // Signal all the EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE events.\r
   // All runtime events are stored in a list in Runtime AP.\r
@@ -286,8 +289,16 @@ RuntimeDriverSetVirtualAddressMap (
   for (Link = mRuntime.EventHead.ForwardLink; Link != &mRuntime.EventHead; Link = Link->ForwardLink) {\r
     RuntimeEvent = BASE_CR (Link, EFI_RUNTIME_EVENT_ENTRY, Link);\r
     if ((RuntimeEvent->Type & EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE) == EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE) {\r
+      //\r
+      // Work around the bug in the Platform Init specification (v1.7),\r
+      // reported as Mantis#2017: "EFI_RUNTIME_EVENT_ENTRY.Event" should have\r
+      // type EFI_EVENT, not (EFI_EVENT*). The PI spec documents the field\r
+      // correctly as "The EFI_EVENT returned by CreateEvent()", but the type\r
+      // of the field doesn't match the natural language description. Therefore\r
+      // we need an explicit cast here.\r
+      //\r
       RuntimeEvent->NotifyFunction (\r
-                      RuntimeEvent->Event,\r
+                      (EFI_EVENT)RuntimeEvent->Event,\r
                       RuntimeEvent->NotifyContext\r
                       );\r
     }\r
@@ -302,19 +313,18 @@ RuntimeDriverSetVirtualAddressMap (
     // We don't want to relocate our selves, as we only run in physical mode.\r
     //\r
     if (mMyImageBase != RuntimeImage->ImageBase) {\r
-\r
-      VirtImageBase = (EFI_PHYSICAL_ADDRESS) (UINTN) RuntimeImage->ImageBase;\r
-      Status  = RuntimeDriverConvertPointer (0, (VOID **) &VirtImageBase);\r
+      VirtImageBase = (EFI_PHYSICAL_ADDRESS)(UINTN)RuntimeImage->ImageBase;\r
+      Status        = RuntimeDriverConvertPointer (0, (VOID **)&VirtImageBase);\r
       ASSERT_EFI_ERROR (Status);\r
 \r
       PeCoffLoaderRelocateImageForRuntime (\r
-        (EFI_PHYSICAL_ADDRESS) (UINTN) RuntimeImage->ImageBase,\r
+        (EFI_PHYSICAL_ADDRESS)(UINTN)RuntimeImage->ImageBase,\r
         VirtImageBase,\r
-        (UINTN) RuntimeImage->ImageSize,\r
+        (UINTN)RuntimeImage->ImageSize,\r
         RuntimeImage->RelocationData\r
         );\r
 \r
-      InvalidateInstructionCacheRange (RuntimeImage->ImageBase, (UINTN) RuntimeImage->ImageSize);\r
+      InvalidateInstructionCacheRange (RuntimeImage->ImageBase, (UINTN)RuntimeImage->ImageSize);\r
     }\r
   }\r
 \r
@@ -322,18 +332,18 @@ RuntimeDriverSetVirtualAddressMap (
   // Convert all the Runtime Services except ConvertPointer() and SetVirtualAddressMap()\r
   // and recompute the CRC-32\r
   //\r
-  RuntimeDriverConvertInternalPointer ((VOID **) &gRT->GetTime);\r
-  RuntimeDriverConvertInternalPointer ((VOID **) &gRT->SetTime);\r
-  RuntimeDriverConvertInternalPointer ((VOID **) &gRT->GetWakeupTime);\r
-  RuntimeDriverConvertInternalPointer ((VOID **) &gRT->SetWakeupTime);\r
-  RuntimeDriverConvertInternalPointer ((VOID **) &gRT->ResetSystem);\r
-  RuntimeDriverConvertInternalPointer ((VOID **) &gRT->GetNextHighMonotonicCount);\r
-  RuntimeDriverConvertInternalPointer ((VOID **) &gRT->GetVariable);\r
-  RuntimeDriverConvertInternalPointer ((VOID **) &gRT->SetVariable);\r
-  RuntimeDriverConvertInternalPointer ((VOID **) &gRT->GetNextVariableName);\r
-  RuntimeDriverConvertInternalPointer ((VOID **) &gRT->QueryVariableInfo);\r
-  RuntimeDriverConvertInternalPointer ((VOID **) &gRT->UpdateCapsule);\r
-  RuntimeDriverConvertInternalPointer ((VOID **) &gRT->QueryCapsuleCapabilities);\r
+  RuntimeDriverConvertInternalPointer ((VOID **)&gRT->GetTime);\r
+  RuntimeDriverConvertInternalPointer ((VOID **)&gRT->SetTime);\r
+  RuntimeDriverConvertInternalPointer ((VOID **)&gRT->GetWakeupTime);\r
+  RuntimeDriverConvertInternalPointer ((VOID **)&gRT->SetWakeupTime);\r
+  RuntimeDriverConvertInternalPointer ((VOID **)&gRT->ResetSystem);\r
+  RuntimeDriverConvertInternalPointer ((VOID **)&gRT->GetNextHighMonotonicCount);\r
+  RuntimeDriverConvertInternalPointer ((VOID **)&gRT->GetVariable);\r
+  RuntimeDriverConvertInternalPointer ((VOID **)&gRT->SetVariable);\r
+  RuntimeDriverConvertInternalPointer ((VOID **)&gRT->GetNextVariableName);\r
+  RuntimeDriverConvertInternalPointer ((VOID **)&gRT->QueryVariableInfo);\r
+  RuntimeDriverConvertInternalPointer ((VOID **)&gRT->UpdateCapsule);\r
+  RuntimeDriverConvertInternalPointer ((VOID **)&gRT->QueryCapsuleCapabilities);\r
   RuntimeDriverCalculateEfiHdrCrc (&gRT->Hdr);\r
 \r
   //\r
@@ -343,9 +353,9 @@ RuntimeDriverSetVirtualAddressMap (
   //\r
   // Convert the runtime fields of the EFI System Table and recompute the CRC-32\r
   //\r
-  RuntimeDriverConvertInternalPointer ((VOID **) &gST->FirmwareVendor);\r
-  RuntimeDriverConvertInternalPointer ((VOID **) &gST->ConfigurationTable);\r
-  RuntimeDriverConvertInternalPointer ((VOID **) &gST->RuntimeServices);\r
+  RuntimeDriverConvertInternalPointer ((VOID **)&gST->FirmwareVendor);\r
+  RuntimeDriverConvertInternalPointer ((VOID **)&gST->ConfigurationTable);\r
+  RuntimeDriverConvertInternalPointer ((VOID **)&gST->RuntimeServices);\r
   RuntimeDriverCalculateEfiHdrCrc (&gST->Hdr);\r
 \r
   //\r
@@ -376,12 +386,12 @@ RuntimeDriverSetVirtualAddressMap (
 EFI_STATUS\r
 EFIAPI\r
 RuntimeDriverInitialize (\r
-  IN EFI_HANDLE                            ImageHandle,\r
-  IN EFI_SYSTEM_TABLE                      *SystemTable\r
+  IN EFI_HANDLE        ImageHandle,\r
+  IN EFI_SYSTEM_TABLE  *SystemTable\r
   )\r
 {\r
-  EFI_STATUS                Status;\r
-  EFI_LOADED_IMAGE_PROTOCOL *MyLoadedImage;\r
+  EFI_STATUS                 Status;\r
+  EFI_LOADED_IMAGE_PROTOCOL  *MyLoadedImage;\r
 \r
   //\r
   // This image needs to be excluded from relocation for virtual mode, so cache\r
@@ -390,16 +400,11 @@ RuntimeDriverInitialize (
   Status = gBS->HandleProtocol (\r
                   ImageHandle,\r
                   &gEfiLoadedImageProtocolGuid,\r
-                  (VOID**)&MyLoadedImage\r
+                  (VOID **)&MyLoadedImage\r
                   );\r
   ASSERT_EFI_ERROR (Status);\r
   mMyImageBase = MyLoadedImage->ImageBase;\r
 \r
-  //\r
-  // Initialize the table used to compute 32-bit CRCs\r
-  //\r
-  RuntimeDriverInitializeCrc32Table ();\r
-\r
   //\r
   // Fill in the entries of the EFI Boot Services and EFI Runtime Services Tables\r
   //\r