OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
OpenRuntime.c
Go to the documentation of this file.
1
15#include "OpenRuntimePrivate.h"
16
17#include <Library/BaseMemoryLib.h>
18#include <Library/DebugLib.h>
20#include <Library/UefiBootServicesTableLib.h>
21#include <Library/UefiRuntimeServicesTableLib.h>
22
23#include <Protocol/LoadedImage.h>
25
26STATIC
27VOID
28EFIAPI
30 OUT OC_FWRT_CONFIG *Config
31 )
32{
33 CopyMem (Config, gCurrentConfig, sizeof (*Config));
34}
35
36STATIC
37VOID
38EFIAPI
40 IN CONST OC_FWRT_CONFIG *Config
41 )
42{
43 CopyMem (&gMainConfig, Config, sizeof (gMainConfig));
44}
45
46STATIC
47VOID
48EFIAPI
50 IN CONST OC_FWRT_CONFIG *Config
51 )
52{
53 if (Config != NULL) {
54 CopyMem (&gOverrideConfig, Config, sizeof (gOverrideConfig));
56 } else {
58 }
59}
60
61STATIC
62EFI_STATUS
63EFIAPI
65 OUT EFI_PHYSICAL_ADDRESS *BaseAddress,
66 OUT UINTN *Pages
67 )
68{
69 //
70 // FIXME: This is not accurate, but it does not need to be for now.
71 //
72 *BaseAddress = (EFI_PHYSICAL_ADDRESS)(UINTN)FwGetCurrent;
73 *Pages = 1;
74 return EFI_SUCCESS;
75}
76
77STATIC
88
89EFI_STATUS
90EFIAPI
92 IN EFI_HANDLE ImageHandle,
93 IN EFI_SYSTEM_TABLE *SystemTable
94 )
95{
96 EFI_STATUS Status;
97 VOID *Interface;
98 EFI_HANDLE Handle;
99
100 Status = gBS->LocateProtocol (
102 NULL,
103 &Interface
104 );
105
106 if (!EFI_ERROR (Status)) {
107 //
108 // In case for whatever reason one tried to reload the driver.
109 //
110 return EFI_ALREADY_STARTED;
111 }
112
113 //
114 // Activate main configuration.
115 //
117
119
120 Handle = NULL;
121 Status = gBS->InstallMultipleProtocolInterfaces (
122 &Handle,
125 NULL
126 );
127
128 ASSERT_EFI_ERROR (Status);
129
130 return EFI_SUCCESS;
131}
EFI_BOOT_SERVICES * gBS
#define OC_FIRMWARE_RUNTIME_REVISION
EFI_GUID gOcFirmwareRuntimeProtocolGuid
APPLE_EVENT_HANDLE Handle
Definition OcTypingLib.h:45
EFI_STATUS EFIAPI UefiEntrypoint(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
Definition OpenRuntime.c:91
STATIC VOID EFIAPI FwSetMain(IN CONST OC_FWRT_CONFIG *Config)
Definition OpenRuntime.c:39
STATIC VOID EFIAPI FwGetCurrent(OUT OC_FWRT_CONFIG *Config)
Definition OpenRuntime.c:29
STATIC VOID EFIAPI FwSetOverride(IN CONST OC_FWRT_CONFIG *Config)
Definition OpenRuntime.c:49
STATIC EFI_STATUS EFIAPI FwGetExecArea(OUT EFI_PHYSICAL_ADDRESS *BaseAddress, OUT UINTN *Pages)
Definition OpenRuntime.c:64
STATIC OC_FIRMWARE_RUNTIME_PROTOCOL mOcFirmwareRuntimeProtocol
Definition OpenRuntime.c:79
VOID RedirectRuntimeServices(VOID)
OC_FWRT_CONFIG gMainConfig
OC_FWRT_CONFIG * gCurrentConfig
EFI_STATUS EFIAPI FwOnGetVariable(IN EFI_GET_VARIABLE GetVariable, OUT EFI_GET_VARIABLE *OrgGetVariable OPTIONAL)
EFI_STATUS EFIAPI FwOnSetAddressMap(IN EFI_SET_VIRTUAL_ADDRESS_MAP SetAddressMap OPTIONAL, IN BOOLEAN Enabled)
OC_FWRT_CONFIG gOverrideConfig
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)