]> git.proxmox.com Git - mirror_edk2.git/blame - EdkModulePkg/Universal/EmuVariable/RuntimeDxe/Ipf/InitVariable.c
Partially make EdkModulePkg pass intel IPF compiler with /W4 /WX switched on.
[mirror_edk2.git] / EdkModulePkg / Universal / EmuVariable / RuntimeDxe / Ipf / InitVariable.c
CommitLineData
878ddf1f 1/*++\r
2\r
3Copyright (c) 2006, 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\r
24//\r
25// Don't use module globals after the SetVirtualAddress map is signaled\r
26//\r
27extern ESAL_VARIABLE_GLOBAL *mVariableModuleGlobal;\r
28\r
1cc8ee78 29STATIC\r
878ddf1f 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->VariableBase[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->VariableBase[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->VariableBase[VirtualMode],\r
87 (UINTN *) &Global->VolatileLastVariableOffset,\r
88 (UINTN *) &Global->NonVolatileLastVariableOffset,\r
89 Global->FvbInstance\r
90 );\r
91 return ReturnVal;\r
92\r
045f4521 93#if (EFI_SPECIFICATION_VERSION >= 0x00020000)\r
94 case EsalQueryVariableInfo:\r
95 ReturnVal.Status = QueryVariableInfo (\r
96 (UINT32) Arg2,\r
97 (UINT64 *) Arg3,\r
98 (UINT64 *) Arg4,\r
99 (UINT64 *) Arg5,\r
100 &Global->VariableBase[VirtualMode],\r
101 Global->FvbInstance\r
102 );\r
103 return ReturnVal;\r
104#endif\r
105\r
878ddf1f 106 default:\r
107 ReturnVal.Status = EFI_SAL_INVALID_ARGUMENT;\r
108 return ReturnVal;\r
109 }\r
110}\r
111\r
112\r
113VOID\r
114VariableClassAddressChangeEvent (\r
115 IN EFI_EVENT Event,\r
116 IN VOID *Context\r
117 )\r
118/*++\r
119\r
120Routine Description:\r
121\r
122Arguments:\r
123\r
124Returns:\r
125\r
126--*/\r
127{\r
128 CopyMem (\r
129 &mVariableModuleGlobal->VariableBase[Virtual],\r
130 &mVariableModuleGlobal->VariableBase[Physical],\r
131 sizeof (VARIABLE_GLOBAL)\r
132 );\r
133\r
134 EfiConvertPointer (\r
135 0x0,\r
136 (VOID **) &mVariableModuleGlobal->VariableBase[Virtual].NonVolatileVariableBase\r
137 );\r
138 EfiConvertPointer (\r
139 0x0,\r
140 (VOID **) &mVariableModuleGlobal->VariableBase[Virtual].VolatileVariableBase\r
141 );\r
142 EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal);\r
143}\r
144\r
145EFI_STATUS\r
146VariableServiceInitialize (\r
147 IN EFI_HANDLE ImageHandle,\r
148 IN EFI_SYSTEM_TABLE *SystemTable\r
149 )\r
150/*++\r
151\r
152Routine Description:\r
153\r
154Arguments:\r
155\r
156Returns:\r
157\r
158--*/\r
159{\r
160 EFI_STATUS Status;\r
161\r
162 Status = VariableCommonInitialize (ImageHandle, SystemTable);\r
163 ASSERT_EFI_ERROR (Status);\r
164\r
165 //\r
166 // Register All the Functions with Extended Sal.\r
167 //\r
168 RegisterEsalClass (\r
169 &gEfiExtendedSalVariableServicesProtocolGuid,\r
170 mVariableModuleGlobal,\r
171 EsalVariableCommonEntry,\r
172 EsalGetVariable,\r
173 EsalVariableCommonEntry,\r
174 EsalGetNextVariableName,\r
175 EsalVariableCommonEntry,\r
176 EsalSetVariable,\r
045f4521 177#if (EFI_SPECIFICATION_VERSION >= 0x00020000)\r
178 EsalVariableCommonEntry,\r
179 EsalQueryVariableInfo,\r
180#endif\r
878ddf1f 181 NULL\r
182 );\r
183\r
184 return EFI_SUCCESS;\r
185}\r