]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/EmuVariableRuntimeDxe/Ipf/InitVariable.c
add IntelFrameworkPkg dependency
[mirror_edk2.git] / MdeModulePkg / Universal / EmuVariableRuntimeDxe / Ipf / InitVariable.c
CommitLineData
f80315c3 1/*++\r
2\r
3Copyright (c) 2006 - 2007, Intel Corporation\r
4All rights reserved. This program and the accompanying materials\r
5are licensed and made available under the terms and conditions of the BSD License\r
6which accompanies this distribution. The full text of the license may be found at\r
7http://opensource.org/licenses/bsd-license.php\r
8\r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11\r
12Module Name:\r
13\r
14 IpfVariable.c\r
15\r
16Abstract:\r
17\r
18Revision History\r
19\r
20--*/\r
21\r
22#include "Variable.h"\r
23#include <IndustryStandard/Sal.h>\r
24\r
25//\r
26// Don't use module globals after the SetVirtualAddress map is signaled\r
27//\r
28\r
29STATIC\r
30SAL_RETURN_REGS\r
31EsalVariableCommonEntry (\r
32 IN UINT64 FunctionId,\r
33 IN UINT64 Arg2,\r
34 IN UINT64 Arg3,\r
35 IN UINT64 Arg4,\r
36 IN UINT64 Arg5,\r
37 IN UINT64 Arg6,\r
38 IN UINT64 Arg7,\r
39 IN UINT64 Arg8,\r
40 IN SAL_EXTENDED_SAL_PROC ExtendedSalProc,\r
41 IN BOOLEAN VirtualMode,\r
42 IN ESAL_VARIABLE_GLOBAL *Global\r
43 )\r
44/*++\r
45\r
46Routine Description:\r
47\r
48Arguments:\r
49\r
50Returns:\r
51\r
52--*/\r
53{\r
54 SAL_RETURN_REGS ReturnVal;\r
55\r
56 switch (FunctionId) {\r
57 case EsalGetVariable:\r
58 ReturnVal.Status = GetVariable (\r
59 (CHAR16 *) Arg2,\r
60 (EFI_GUID *) Arg3,\r
61 (UINT32 *) Arg4,\r
62 (UINTN *) Arg5,\r
63 (VOID *) Arg6,\r
64 &Global->VariableGlobal[VirtualMode],\r
65 Global->FvbInstance\r
66 );\r
67 return ReturnVal;\r
68\r
69 case EsalGetNextVariableName:\r
70 ReturnVal.Status = GetNextVariableName (\r
71 (UINTN *) Arg2,\r
72 (CHAR16 *) Arg3,\r
73 (EFI_GUID *) Arg4,\r
74 &Global->VariableGlobal[VirtualMode],\r
75 Global->FvbInstance\r
76 );\r
77 return ReturnVal;\r
78\r
79 case EsalSetVariable:\r
80 ReturnVal.Status = SetVariable (\r
81 (CHAR16 *) Arg2,\r
82 (EFI_GUID *) Arg3,\r
83 (UINT32) Arg4,\r
84 (UINTN) Arg5,\r
85 (VOID *) Arg6,\r
86 &Global->VariableGlobal[VirtualMode],\r
87 (UINTN *) &Global->VolatileLastVariableOffset,\r
88 (UINTN *) &Global->NonVolatileLastVariableOffset,\r
89 Global->FvbInstance\r
90 );\r
91 return ReturnVal;\r
92\r
93 case EsalQueryVariableInfo:\r
94 ReturnVal.Status = QueryVariableInfo (\r
95 (UINT32) Arg2,\r
96 (UINT64 *) Arg3,\r
97 (UINT64 *) Arg4,\r
98 (UINT64 *) Arg5,\r
99 &Global->VariableGlobal[VirtualMode],\r
100 Global->FvbInstance\r
101 );\r
102 return ReturnVal;\r
103\r
104 default:\r
105 ReturnVal.Status = EFI_SAL_INVALID_ARGUMENT;\r
106 return ReturnVal;\r
107 }\r
108}\r
109\r
110\r
111VOID\r
112VariableClassAddressChangeEvent (\r
113 IN EFI_EVENT Event,\r
114 IN VOID *Context\r
115 )\r
116/*++\r
117\r
118Routine Description:\r
119\r
120Arguments:\r
121\r
122Returns:\r
123\r
124--*/\r
125{\r
126 CopyMem (\r
127 &mVariableModuleGlobal->VariableGlobal[Virtual],\r
128 &mVariableModuleGlobal->VariableGlobal[Physical],\r
129 sizeof (VARIABLE_GLOBAL)\r
130 );\r
131\r
132 EfiConvertPointer (\r
133 0x0,\r
134 (VOID **) &mVariableModuleGlobal->VariableGlobal[Virtual].NonVolatileVariableBase\r
135 );\r
136 EfiConvertPointer (\r
137 0x0,\r
138 (VOID **) &mVariableModuleGlobal->VariableGlobal[Virtual].VolatileVariableBase\r
139 );\r
140 EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal);\r
141}\r
142\r
143EFI_STATUS\r
144VariableServiceInitialize (\r
145 IN EFI_HANDLE ImageHandle,\r
146 IN EFI_SYSTEM_TABLE *SystemTable\r
147 )\r
148/*++\r
149\r
150Routine Description:\r
151\r
152Arguments:\r
153\r
154Returns:\r
155\r
156--*/\r
157{\r
158 EFI_STATUS Status;\r
159\r
160 Status = VariableCommonInitialize (ImageHandle, SystemTable);\r
161 ASSERT_EFI_ERROR (Status);\r
162\r
163 //\r
164 // Register All the Functions with Extended Sal.\r
165 //\r
166 RegisterEsalClass (\r
167 &gEfiExtendedSalVariableServicesProtocolGuid,\r
168 mVariableModuleGlobal,\r
169 EsalVariableCommonEntry,\r
170 EsalGetVariable,\r
171 EsalVariableCommonEntry,\r
172 EsalGetNextVariableName,\r
173 EsalVariableCommonEntry,\r
174 EsalSetVariable,\r
175 EsalVariableCommonEntry,\r
176 EsalQueryVariableInfo,\r
177 NULL\r
178 );\r
179\r
180 return EFI_SUCCESS;\r
181}\r