• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /** @file
2   Runtime Architectural Protocol as defined in the DXE CIS.
3 
4   This code is used to produce the EFI runtime architectural protocol.
5 
6 Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
7 This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution.  The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
11 
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14 
15 **/
16 
17 #ifndef _RUNTIME_H_
18 #define _RUNTIME_H_
19 
20 #include <PiDxe.h>
21 #include <Protocol/LoadedImage.h>
22 #include <Protocol/Runtime.h>
23 #include <Library/BaseLib.h>
24 #include <Library/UefiDriverEntryPoint.h>
25 #include <Library/DebugLib.h>
26 #include <Library/ReportStatusCodeLib.h>
27 #include <Library/UefiRuntimeServicesTableLib.h>
28 #include <Library/UefiBootServicesTableLib.h>
29 #include <Library/UefiLib.h>
30 #include <Library/CacheMaintenanceLib.h>
31 #include <Library/PeCoffLib.h>
32 
33 
34 //
35 // Function Prototypes
36 //
37 /**
38   Calculate CRC32 for target data.
39 
40   @param Data            The target data.
41   @param DataSize        The target data size.
42   @param CrcOut          The CRC32 for target data.
43 
44   @retval  EFI_SUCCESS            The CRC32 for target data is calculated successfully.
45   @retval  EFI_INVALID_PARAMETER  Some parameter is not valid, so the CRC32 is not
46                                   calculated.
47 
48 **/
49 EFI_STATUS
50 EFIAPI
51 RuntimeDriverCalculateCrc32 (
52   IN  VOID    *Data,
53   IN  UINTN   DataSize,
54   OUT UINT32  *CrcOut
55   );
56 
57 /**
58   Determines the new virtual address that is to be used on subsequent memory accesses.
59 
60 
61   @param DebugDisposition Supplies type information for the pointer being converted.
62   @param ConvertAddress  A pointer to a pointer that is to be fixed to be the value needed
63                          for the new virtual address mappings being applied.
64 
65   @retval  EFI_SUCCESS              The pointer pointed to by Address was modified.
66   @retval  EFI_NOT_FOUND            The pointer pointed to by Address was not found to be part
67                                     of the current memory map. This is normally fatal.
68   @retval  EFI_INVALID_PARAMETER    One of the parameters has an invalid value.
69 
70 **/
71 EFI_STATUS
72 EFIAPI
73 RuntimeDriverConvertPointer (
74   IN     UINTN  DebugDisposition,
75   IN OUT VOID   **ConvertAddress
76   );
77 
78 /**
79   Changes the runtime addressing mode of EFI firmware from physical to virtual.
80 
81   @param  MemoryMapSize   The size in bytes of VirtualMap.
82   @param  DescriptorSize  The size in bytes of an entry in the VirtualMap.
83   @param  DescriptorVersion The version of the structure entries in VirtualMap.
84   @param  VirtualMap      An array of memory descriptors which contain new virtual
85                          address mapping information for all runtime ranges.
86 
87   @retval  EFI_SUCCESS            The virtual address map has been applied.
88   @retval  EFI_UNSUPPORTED        EFI firmware is not at runtime, or the EFI firmware is already in
89                                   virtual address mapped mode.
90   @retval  EFI_INVALID_PARAMETER  DescriptorSize or DescriptorVersion is invalid.
91   @retval  EFI_NO_MAPPING         A virtual address was not supplied for a range in the memory
92                                   map that requires a mapping.
93   @retval  EFI_NOT_FOUND          A virtual address was supplied for an address that is not found
94                                   in the memory map.
95 
96 **/
97 EFI_STATUS
98 EFIAPI
99 RuntimeDriverSetVirtualAddressMap (
100   IN UINTN                  MemoryMapSize,
101   IN UINTN                  DescriptorSize,
102   IN UINT32                 DescriptorVersion,
103   IN EFI_MEMORY_DESCRIPTOR  *VirtualMap
104   );
105 
106 /**
107   Initialize CRC32 table.
108 
109 **/
110 VOID
111 RuntimeDriverInitializeCrc32Table (
112   VOID
113   );
114 
115 /**
116   Install Runtime AP. This code includes the EfiRuntimeLib, but it only
117   functions at RT in physical mode.
118 
119   @param  ImageHandle     Image handle of this driver.
120   @param  SystemTable     Pointer to the EFI System Table.
121 
122   @retval EFI_SUCEESS  Runtime Driver Architectural Protocol Installed
123   @return Other value if gBS->InstallMultipleProtocolInterfaces fails. Check
124            gBS->InstallMultipleProtocolInterfaces for details.
125 
126 **/
127 EFI_STATUS
128 EFIAPI
129 RuntimeDriverInitialize (
130   IN EFI_HANDLE                            ImageHandle,
131   IN EFI_SYSTEM_TABLE                      *SystemTable
132   );
133 
134 #endif
135