+++ /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
- Runtime.c\r
-\r
-Abstract:\r
-\r
- Runtime Architectural Protocol as defined in the DXE CIS\r
-\r
- This code is used to produce the EFI runtime virtual switch over\r
-\r
- THIS IS VERY DANGEROUS CODE BE VERY CAREFUL IF YOU CHANGE IT\r
-\r
- The transition for calling EFI Runtime functions in physical mode to calling\r
- them in virtual mode is very very complex. Every pointer in needs to be\r
- converted from physical mode to virtual mode. Be very careful walking linked\r
- lists! Then to make it really hard the code it's self needs be relocated into\r
- the new virtual address space.\r
-\r
- So here is the concept. The code in this module will never ever be called in\r
- virtual mode. This is the code that collects the information needed to convert\r
- to virtual mode (DXE core registers runtime stuff with this code). Since this\r
- code is used to fixup all runtime images, it CAN NOT fix it's self up. So some\r
- code has to stay behind and that is us.\r
-\r
- Also you need to be careful about when you allocate memory, as once we are in\r
- runtime (including our EVT_SIGNAL_EXIT_BOOT_SERVICES event) you can no longer\r
- allocate memory.\r
-\r
- Any runtime driver that gets loaded before us will not be callable in virtual\r
- mode. This is due to the fact that the DXE core can not register the info\r
- needed with us. This is good, since it keeps the code in this file from\r
- getting registered.\r
-\r
-\r
-Revision History:\r
-\r
- - Move the CalculateCrc32 function from Runtime Arch Protocol to Boot Service.\r
- Runtime Arch Protocol definition no longer contains CalculateCrc32. Boot Service\r
- Table now contains an item named CalculateCrc32.\r
-\r
---*/\r
-\r
-#include "Runtime.h"\r
-\r
-//\r
-// Global Variables\r
-//\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
-\r
-//\r
-// The Runtime Architectural Protocol instance produced by this driver\r
-//\r
-EFI_RUNTIME_ARCH_PROTOCOL mRuntime = {\r
- INITIALIZE_LIST_HEAD_VARIABLE (mRuntime.ImageHead),\r
- INITIALIZE_LIST_HEAD_VARIABLE (mRuntime.EventHead),\r
-\r
- //\r
- // Make sure Size != sizeof (EFI_MEMORY_DESCRIPTOR). This will\r
- // prevent people from having pointer math bugs in their code.\r
- // now you have to use *DescriptorSize to make things work.\r
- //\r
- sizeof (EFI_MEMORY_DESCRIPTOR) + sizeof (UINT64) - (sizeof (EFI_MEMORY_DESCRIPTOR) % sizeof (UINT64)),\r
- EFI_MEMORY_DESCRIPTOR_VERSION,\r
- 0,\r
- NULL,\r
- NULL,\r
- FALSE,\r
- FALSE\r
-};\r
-\r
-//\r
-// Worker Functions\r
-//\r
-STATIC\r
-VOID\r
-RuntimeDriverCalculateEfiHdrCrc (\r
- IN OUT EFI_TABLE_HEADER *Hdr\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Calcualte the 32-bit CRC in a EFI table using the Runtime Drivers\r
- internal function. The EFI Boot Services Table can not be used because\r
- the EFI Boot Services Table was destroyed at ExitBootServices()\r
-\r
-Arguments:\r
-\r
- Hdr - Pointer to an EFI standard header\r
-\r
-Returns:\r
-\r
- None\r
-\r
---*/\r
-{\r
- UINT32 Crc;\r
-\r
- Hdr->CRC32 = 0;\r
-\r
- Crc = 0;\r
- RuntimeDriverCalculateCrc32 ((UINT8 *) Hdr, Hdr->HeaderSize, &Crc);\r
- Hdr->CRC32 = Crc;\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-RuntimeDriverConvertPointer (\r
- IN UINTN DebugDisposition,\r
- IN OUT VOID **ConvertAddress\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
- ConvertAddress - 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
- EFI_SUCCESS - The pointer pointed to by Address was modified.\r
- EFI_NOT_FOUND - The pointer pointed to by Address was not found to be part\r
- of the current memory map. This is normally fatal.\r
- EFI_INVALID_PARAMETER - One of the parameters has an invalid value.\r
-\r
---*/\r
-{\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
- //\r
- if (ConvertAddress == NULL) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
- //\r
- // Get the address to convert\r
- //\r
- Address = (UINTN) *ConvertAddress;\r
-\r
- //\r
- // If this is a null pointer, return if it's allowed\r
- //\r
- if (Address == 0) {\r
- if (DebugDisposition & EFI_OPTIONAL_POINTER) {\r
- return EFI_SUCCESS;\r
- }\r
-\r
- return EFI_INVALID_PARAMETER;\r
- }\r
-\r
- VirtEntry = mVirtualMap;\r
- for (Index = 0; Index < mVirtualMapMaxIndex; Index++) {\r
- //\r
- // To prevent the inclusion of 64-bit math functions a UINTN was placed in\r
- // front of VirtEntry->NumberOfPages to cast it to a 32-bit thing on IA-32\r
- // 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
-\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
- if (Address < VirtEndOfRange) {\r
- //\r
- // Compute new address\r
- //\r
- *ConvertAddress = (VOID *) (Address - (UINTN) VirtEntry->PhysicalStart + (UINTN) VirtEntry->VirtualStart);\r
- return EFI_SUCCESS;\r
- }\r
- }\r
- }\r
-\r
- VirtEntry = NextMemoryDescriptor (VirtEntry, mVirtualMapDescriptorSize);\r
- }\r
-\r
- return EFI_NOT_FOUND;\r
-}\r
-\r
-STATIC\r
-EFI_STATUS\r
-RuntimeDriverConvertInternalPointer (\r
- IN OUT VOID **ConvertAddress\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Determines the new virtual address that is to be used on subsequent memory accesses\r
- for internal pointers.\r
-\r
-Arguments:\r
-\r
- ConvertAddress - 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
- EFI_SUCCESS - The pointer pointed to by Address was modified.\r
- EFI_NOT_FOUND - The pointer pointed to by Address was not found to be part\r
- of the current memory map. This is normally fatal.\r
- EFI_INVALID_PARAMETER - One of the parameters has an invalid value.\r
-\r
---*/\r
-{\r
- return RuntimeDriverConvertPointer (0x0, ConvertAddress);\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-RuntimeDriverSetVirtualAddressMap (\r
- IN UINTN MemoryMapSize,\r
- IN UINTN DescriptorSize,\r
- IN UINT32 DescriptorVersion,\r
- IN EFI_MEMORY_DESCRIPTOR *VirtualMap\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Changes the runtime addressing mode of EFI firmware from physical to virtual.\r
-\r
-Arguments:\r
-\r
- MemoryMapSize - The size in bytes of VirtualMap.\r
- DescriptorSize - The size in bytes of an entry in the VirtualMap.\r
- DescriptorVersion - The version of the structure entries in VirtualMap.\r
- VirtualMap - An array of memory descriptors which contain new virtual\r
- address mapping information for all runtime ranges.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - The virtual address map has been applied.\r
- EFI_UNSUPPORTED - EFI firmware is not at runtime, or the EFI firmware is already in\r
- virtual address mapped mode.\r
- EFI_INVALID_PARAMETER - DescriptorSize or DescriptorVersion is invalid.\r
- EFI_NO_MAPPING - A virtual address was not supplied for a range in the memory\r
- map that requires a mapping.\r
- EFI_NOT_FOUND - A virtual address was supplied for an address that is not found\r
- in the memory map.\r
-\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
-\r
- //\r
- // Can only switch to virtual addresses once the memory map is locked down,\r
- // and can only set it once\r
- //\r
- if (!mRuntime.AtRuntime || mRuntime.VirtualMode) {\r
- return EFI_UNSUPPORTED;\r
- }\r
- //\r
- // Only understand the original descriptor format\r
- //\r
- if (DescriptorVersion != EFI_MEMORY_DESCRIPTOR_VERSION || DescriptorSize < sizeof (EFI_MEMORY_DESCRIPTOR)) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
- //\r
- // We are now committed to go to virtual mode, so lets get to it!\r
- //\r
- mRuntime.VirtualMode = TRUE;\r
-\r
- //\r
- // ConvertPointer() needs this mVirtualMap to do the conversion. So set up\r
- // globals we need to parse the virtual address map.\r
- //\r
- mVirtualMapDescriptorSize = DescriptorSize;\r
- mVirtualMapMaxIndex = MemoryMapSize / DescriptorSize;\r
- mVirtualMap = VirtualMap;\r
-\r
- //\r
- // Currently the bug in StatusCode/RuntimeLib has been fixed, it will\r
- // check whether in Runtime or not (this is judged by looking at\r
- // mEfiAtRuntime global So this ReportStatusCode will work\r
- //\r
- REPORT_STATUS_CODE (EFI_PROGRESS_CODE, PcdGet32 (PcdStatusCodeValueSetVirtualAddressMap));\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
- //\r
- for (Link = mRuntime.EventHead.ForwardLink; Link != &mRuntime.EventHead; Link = Link->ForwardLink) {\r
- RuntimeEvent = _CR (Link, EFI_RUNTIME_EVENT_ENTRY, Link);\r
- if ((RuntimeEvent->Type & EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE) == EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE) {\r
- RuntimeEvent->NotifyFunction (\r
- RuntimeEvent->Event,\r
- RuntimeEvent->NotifyContext\r
- );\r
- }\r
- }\r
-\r
- //\r
- // Relocate runtime images. All runtime images are stored in a list in Runtime AP.\r
- //\r
- for (Link = mRuntime.ImageHead.ForwardLink; Link != &mRuntime.ImageHead; Link = Link->ForwardLink) {\r
- RuntimeImage = _CR (Link, EFI_RUNTIME_IMAGE_ENTRY, Link);\r
- //\r
- // 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
- ASSERT_EFI_ERROR (Status);\r
-\r
- PeCoffLoaderRelocateImageForRuntime (\r
- (EFI_PHYSICAL_ADDRESS) (UINTN) RuntimeImage->ImageBase,\r
- VirtImageBase,\r
- (UINTN) RuntimeImage->ImageSize,\r
- RuntimeImage->RelocationData\r
- );\r
-\r
- InvalidateInstructionCacheRange (RuntimeImage->ImageBase, (UINTN)RuntimeImage->ImageSize);\r
- }\r
- }\r
-\r
- //\r
- // 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
- RuntimeDriverCalculateEfiHdrCrc (&gRT->Hdr);\r
-\r
- //\r
- // BugBug: PI requires System Configuration Tables Conversion.\r
- // Currently, we do not implement it.\r
- //\r
-\r
- //\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
- RuntimeDriverCalculateEfiHdrCrc (&gST->Hdr);\r
-\r
- //\r
- // At this point, gRT and gST are physical pointers, but the contents of these tables\r
- // have been converted to runtime.\r
- //\r
- //\r
- // mVirtualMap is only valid during SetVirtualAddressMap() call\r
- //\r
- mVirtualMap = NULL;\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-RuntimeDriverInitialize (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
- )\r
-/*++\r
-\r
-Routine Description:\r
- Install Runtime AP. This code includes the EfiDriverLib, but it functions at\r
- RT in physical mode. The only Lib services are gBS, gRT, and the DEBUG and\r
- ASSERT macros (they do ReportStatusCode).\r
-\r
-Arguments:\r
- (Standard EFI Image entry - EFI_IMAGE_ENTRY_POINT)\r
-\r
-Returns:\r
-\r
- EFI_SUCEESS - Runtime Driver Architectural Protocol Installed\r
-\r
- Other - Return value from gBS->InstallMultipleProtocolInterfaces\r
-\r
---*/\r
-{\r
- EFI_STATUS Status;\r
- EFI_LOADED_IMAGE_PROTOCOL *MyLoadedImage;\r
-\r
- //\r
- // This image needs to be exclued from relocation for virtual mode, so cache\r
- // a copy of the Loaded Image protocol to test later.\r
- //\r
- Status = gBS->HandleProtocol (\r
- ImageHandle,\r
- &gEfiLoadedImageProtocolGuid,\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
- gBS->CalculateCrc32 = RuntimeDriverCalculateCrc32;\r
- gRT->SetVirtualAddressMap = RuntimeDriverSetVirtualAddressMap;\r
- gRT->ConvertPointer = RuntimeDriverConvertPointer;\r
-\r
- //\r
- // Install the Runtime Architectural Protocol onto a new handle\r
- //\r
- Status = gBS->InstallMultipleProtocolInterfaces (\r
- &mRuntimeHandle,\r
- &gEfiRuntimeArchProtocolGuid,\r
- &mRuntime,\r
- NULL\r
- );\r
- ASSERT_EFI_ERROR (Status);\r
-\r
- return EFI_SUCCESS;\r
-}\r
+++ /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
- Runtime.h\r
-\r
-Abstract:\r
-\r
- Runtime Architectural Protocol as defined in the DXE CIS\r
-\r
- This code is used to produce the EFI runtime architectural protocol.\r
-\r
---*/\r
-\r
-#ifndef _RUNTIME_H_\r
-#define _RUNTIME_H_\r
-\r
-#include <PiDxe.h>\r
-#include <Protocol/LoadedImage.h>\r
-#include <Protocol/Runtime.h>\r
-#include <Protocol/UgaIo.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/UefiDriverEntryPoint.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/ReportStatusCodeLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/UefiRuntimeServicesTableLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/CacheMaintenanceLib.h>\r
-#include <Library/PeCoffLib.h>\r
-#include <Library/PcdLib.h>\r
-\r
-\r
-//\r
-// Function Prototypes\r
-//\r
-EFI_STATUS\r
-EFIAPI\r
-RuntimeDriverCalculateCrc32 (\r
- IN VOID *Data,\r
- IN UINTN DataSize,\r
- OUT UINT32 *CrcOut\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Calculate CRC32 for target data\r
-\r
-Arguments:\r
-\r
- Data - The target data.\r
- DataSize - The target data size.\r
- CrcOut - The CRC32 for target data.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - The CRC32 for target data is calculated successfully.\r
- EFI_INVALID_PARAMETER - Some parameter is not valid, so the CRC32 is not \r
- calculated.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-RuntimeDriverConvertPointer (\r
- IN UINTN DebugDisposition,\r
- IN OUT VOID **ConvertAddress\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
- ConvertAddress - 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
- EFI_SUCCESS - The pointer pointed to by Address was modified.\r
- EFI_NOT_FOUND - The pointer pointed to by Address was not found to be part\r
- of the current memory map. This is normally fatal.\r
- EFI_INVALID_PARAMETER - One of the parameters has an invalid value.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-RuntimeDriverSetVirtualAddressMap (\r
- IN UINTN MemoryMapSize,\r
- IN UINTN DescriptorSize,\r
- IN UINT32 DescriptorVersion,\r
- IN EFI_MEMORY_DESCRIPTOR *VirtualMap\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Changes the runtime addressing mode of EFI firmware from physical to virtual.\r
-\r
-Arguments:\r
- \r
- MemoryMapSize - The size in bytes of VirtualMap.\r
- DescriptorSize - The size in bytes of an entry in the VirtualMap.\r
- DescriptorVersion - The version of the structure entries in VirtualMap.\r
- VirtualMap - An array of memory descriptors which contain new virtual\r
- address mapping information for all runtime ranges.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - The virtual address map has been applied.\r
- EFI_UNSUPPORTED - EFI firmware is not at runtime, or the EFI firmware is already in\r
- virtual address mapped mode.\r
- EFI_INVALID_PARAMETER - DescriptorSize or DescriptorVersion is invalid.\r
- EFI_NO_MAPPING - A virtual address was not supplied for a range in the memory\r
- map that requires a mapping.\r
- EFI_NOT_FOUND - A virtual address was supplied for an address that is not found\r
- in the memory map.\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-RuntimeDriverInitializeCrc32Table (\r
- VOID\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Initialize CRC32 table.\r
-\r
-Arguments:\r
-\r
- None.\r
-\r
-Returns:\r
-\r
- None.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-RuntimeDriverInitialize (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Install Runtime AP. This code includes the EfiRuntimeLib, but it only \r
- functions at RT in physical mode. \r
-\r
-Arguments:\r
- \r
- ImageHandle - Image handle of this driver.\r
- SystemTable - Pointer to the EFI System Table.\r
-\r
-Returns:\r
-\r
- EFI_SUCEESS - Runtime Driver Architectural Protocol installed.\r
-\r
---*/\r
-;\r
-\r
-#endif\r
+++ /dev/null
-#/** @file\r
-# Component description file for Runtime module.\r
-#\r
-# This module is used to produce the EFI runtime virtual switch over services.\r
-# Copyright (c) 2006 - 2007, Intel Corporation\r
-#\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
-# 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
-#\r
-#**/\r
-\r
-################################################################################\r
-#\r
-# Defines Section - statements that will be processed to create a Makefile.\r
-#\r
-################################################################################\r
-[Defines]\r
- INF_VERSION = 0x00010005\r
- BASE_NAME = Runtime\r
- FILE_GUID = B601F8C4-43B7-4784-95B1-F4226CB40CEE\r
- MODULE_TYPE = DXE_RUNTIME_DRIVER\r
- VERSION_STRING = 1.0\r
- EDK_RELEASE_VERSION = 0x00020000\r
- EFI_SPECIFICATION_VERSION = 0x00020000\r
-\r
- ENTRY_POINT = RuntimeDriverInitialize\r
-\r
-#\r
-# The following information is for reference only and not required by the build tools.\r
-#\r
-# VALID_ARCHITECTURES = IA32 X64 IPF EBC\r
-#\r
-\r
-################################################################################\r
-#\r
-# Sources Section - list of files that are required for the build to succeed.\r
-#\r
-################################################################################\r
-\r
-[Sources.common]\r
- Crc32.c\r
- Runtime.h\r
- Runtime.c\r
- \r
-\r
-################################################################################\r
-#\r
-# Includes Section - list of Include locations that are required for\r
-# this module.\r
-#\r
-################################################################################\r
-\r
-[Includes]\r
-\r
-################################################################################\r
-#\r
-# Package Dependency Section - list of Package files that are required for\r
-# this module.\r
-#\r
-################################################################################\r
-\r
-[Packages]\r
- MdePkg/MdePkg.dec\r
-\r
-\r
-################################################################################\r
-#\r
-# Library Class Section - list of Library Classes that are required for\r
-# this module.\r
-#\r
-################################################################################\r
-\r
-[LibraryClasses]\r
- PeCoffLib\r
- CacheMaintenanceLib\r
- UefiBootServicesTableLib\r
- UefiRuntimeServicesTableLib\r
- BaseMemoryLib\r
- ReportStatusCodeLib\r
- DebugLib\r
- UefiDriverEntryPoint\r
- BaseLib\r
-\r
-\r
-################################################################################\r
-#\r
-# Guid C Name Section - list of Guids that this module uses or produces.\r
-#\r
-################################################################################\r
-\r
-[Guids]\r
-\r
-\r
-################################################################################\r
-#\r
-# Protocol C Name Section - list of Protocol and Protocol Notify C Names\r
-# that this module uses or produces.\r
-#\r
-################################################################################\r
-\r
-[Protocols]\r
- gEfiRuntimeArchProtocolGuid # PROTOCOL ALWAYS_PRODUCED\r
- gEfiLoadedImageProtocolGuid # PROTOCOL ALWAYS_CONSUMED\r
-\r
-[PcdsFixedAtBuild.common]\r
- PcdStatusCodeValueSetVirtualAddressMap|gEfiMdePkgTokenSpaceGuid\r
- \r
-[depex]\r
- TRUE
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0">\r
- <MsaHeader>\r
- <ModuleName>Runtime</ModuleName>\r
- <ModuleType>DXE_RUNTIME_DRIVER</ModuleType>\r
- <GuidValue>B601F8C4-43B7-4784-95B1-F4226CB40CEE</GuidValue>\r
- <Version>1.0</Version>\r
- <Abstract>Component description file for Runtime module.</Abstract>\r
- <Description>This module is used to produce the EFI runtime virtual switch over services.</Description>\r
- <Copyright>Copyright (c) 2006 - 2007, Intel Corporation</Copyright>\r
- <License>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
- 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.</License>\r
- <Specification>FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052</Specification>\r
- </MsaHeader>\r
- <ModuleDefinitions>\r
- <SupportedArchitectures>IA32 X64 IPF EBC</SupportedArchitectures>\r
- <BinaryModule>false</BinaryModule>\r
- <OutputFileBasename>Runtime</OutputFileBasename>\r
- </ModuleDefinitions>\r
- <LibraryClassDefinitions>\r
- <LibraryClass Usage="ALWAYS_CONSUMED">\r
- <Keyword>BaseLib</Keyword>\r
- </LibraryClass>\r
- <LibraryClass Usage="ALWAYS_CONSUMED">\r
- <Keyword>UefiDriverEntryPoint</Keyword>\r
- </LibraryClass>\r
- <LibraryClass Usage="ALWAYS_CONSUMED" RecommendedInstanceGuid="bda39d3a-451b-4350-8266-81ab10fa0523">\r
- <Keyword>DebugLib</Keyword>\r
- <HelpText>Recommended libary Instance is PeiDxeDebugLibReportStatusCode instance in MdePkg.</HelpText>\r
- </LibraryClass>\r
- <LibraryClass Usage="ALWAYS_CONSUMED">\r
- <Keyword>ReportStatusCodeLib</Keyword>\r
- </LibraryClass>\r
- <LibraryClass Usage="ALWAYS_CONSUMED">\r
- <Keyword>BaseMemoryLib</Keyword>\r
- </LibraryClass>\r
- <LibraryClass Usage="ALWAYS_CONSUMED">\r
- <Keyword>UefiRuntimeServicesTableLib</Keyword>\r
- </LibraryClass>\r
- <LibraryClass Usage="ALWAYS_CONSUMED">\r
- <Keyword>UefiBootServicesTableLib</Keyword>\r
- </LibraryClass>\r
- <LibraryClass Usage="ALWAYS_CONSUMED">\r
- <Keyword>CacheMaintenanceLib</Keyword>\r
- </LibraryClass>\r
- <LibraryClass Usage="ALWAYS_CONSUMED">\r
- <Keyword>PeCoffLib</Keyword>\r
- </LibraryClass>\r
- </LibraryClassDefinitions>\r
- <SourceFiles>\r
- <Filename>Runtime.dxs</Filename>\r
- <Filename>Runtime.c</Filename>\r
- <Filename>Runtime.h</Filename>\r
- <Filename>Crc32.c</Filename>\r
- </SourceFiles>\r
- <PackageDependencies>\r
- <Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>\r
- <Package PackageGuid="68169ab0-d41b-4009-9060-292c253ac43d"/>\r
- </PackageDependencies>\r
- <Protocols>\r
- <Protocol Usage="ALWAYS_CONSUMED">\r
- <ProtocolCName>gEfiLoadedImageProtocolGuid</ProtocolCName>\r
- </Protocol>\r
- <Protocol Usage="ALWAYS_PRODUCED">\r
- <ProtocolCName>gEfiRuntimeArchProtocolGuid</ProtocolCName>\r
- </Protocol>\r
- </Protocols>\r
- <SystemTables>\r
- <SystemTableCNames Usage="SOMETIMES_CONSUMED">\r
- <SystemTableCName>gEfiUgaIoProtocolGuid</SystemTableCName>\r
- </SystemTableCNames>\r
- <SystemTableCNames Usage="SOMETIMES_CONSUMED">\r
- <SystemTableCName>gEfiCapsuleGuid</SystemTableCName>\r
- </SystemTableCNames>\r
- </SystemTables>\r
- <Externs>\r
- <Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>\r
- <Specification>EDK_RELEASE_VERSION 0x00020000</Specification>\r
- <Extern>\r
- <ModuleEntryPoint>RuntimeDriverInitialize</ModuleEntryPoint>\r
- </Extern>\r
- </Externs>\r
-</ModuleSurfaceArea>
\ No newline at end of file