Check in library class definition of ExtendedSalLib.
[people/mcb30/edk2.git] / edk2 / EdkModulePkg / Include / Library / ExtendedSalLib.h
1 /*++\r
2 \r
3 Copyright (c) 2007, Intel Corporation                                                         \r
4 All rights reserved. This program and the accompanying materials                          \r
5 are licensed and made available under the terms and conditions of the BSD License         \r
6 which accompanies this distribution.  The full text of the license may be found at        \r
7 http://opensource.org/licenses/bsd-license.php                                            \r
8                                                                                           \r
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
11 \r
12 Module Name:\r
13 \r
14   ExtendedSalLib.h\r
15 \r
16 Abstract:\r
17 \r
18 --*/\r
19 \r
20 #ifndef _EXTENDED_SAL_LIB_H__\r
21 #define _EXTENDED_SAL_LIB_H__\r
22 \r
23 /**\r
24   Register ESAL Class and it's asociated global.\r
25   \r
26   This function Registers one or more Extended SAL services in a given\r
27   class along with the associated global context.\r
28   This function is only available prior to ExitBootServices().\r
29 \r
30   @param  ClassGuid            GUID of function class\r
31   @param  ModuleGlobal         Module global for Function.\r
32   \r
33   @retval EFI_SUCCESS          The Extended SAL services were registered.\r
34   @retval EFI_UNSUPPORTED      This function was called after ExitBootServices().\r
35   @retval EFI_OUT_OF_RESOURCES There are not enough resources available to register one or more of the specified services.\r
36   @retval Other                ClassGuid could not be installed onto a new handle.  \r
37 \r
38 **/\r
39 EFI_STATUS\r
40 EFIAPI\r
41 RegisterEsalClass (\r
42   IN  CONST EFI_GUID  *ClassGuid,\r
43   IN  VOID            *ModuleGlobal,  OPTIONAL\r
44   ...\r
45   )\r
46 ;\r
47 \r
48 /**\r
49   Calls an Extended SAL Class service that was previously registered with RegisterEsalClass().\r
50   \r
51   This function calls an Extended SAL Class service that was previously registered with RegisterEsalClass().\r
52 \r
53   @param  ClassGuid      GUID of function\r
54   @param  FunctionId     Function in ClassGuid to call\r
55   @param  Arg2           Argument 2 ClassGuid/FunctionId defined\r
56   @param  Arg3           Argument 3 ClassGuid/FunctionId defined\r
57   @param  Arg4           Argument 4 ClassGuid/FunctionId defined\r
58   @param  Arg5           Argument 5 ClassGuid/FunctionId defined\r
59   @param  Arg6           Argument 6 ClassGuid/FunctionId defined\r
60   @param  Arg7           Argument 7 ClassGuid/FunctionId defined\r
61   @param  Arg8           Argument 8 ClassGuid/FunctionId defined\r
62   \r
63   @retval EFI_SAL_ERROR  The address of ExtendedSalProc() can not be determined\r
64                          for the current CPU execution mode.\r
65   @retval Other          See the return status from ExtendedSalProc() in the\r
66                          EXTENDED_SAL_BOOT_SERVICE_PROTOCOL.  \r
67 \r
68 **/\r
69 SAL_RETURN_REGS\r
70 EFIAPI\r
71 EsalCall (\r
72   IN  EFI_GUID  *ClassGuid,\r
73   IN  UINT64    FunctionId,\r
74   IN  UINT64    Arg2,\r
75   IN  UINT64    Arg3,\r
76   IN  UINT64    Arg4,\r
77   IN  UINT64    Arg5,\r
78   IN  UINT64    Arg6,\r
79   IN  UINT64    Arg7,\r
80   IN  UINT64    Arg8\r
81   )\r
82 ;\r
83 \r
84 /**\r
85   Wrapper for the EsalStallFunctionId service in the Extended SAL Stall Services Class.\r
86   \r
87   This function is a wrapper for the EsalStallFunctionId service in the Extended SAL\r
88   Stall Services Class. See EsalStallFunctionId in the Extended SAL Specification.\r
89 \r
90   @param  Microseconds         The number of microseconds to delay.\r
91 \r
92 **/\r
93 SAL_RETURN_REGS\r
94 EFIAPI\r
95 EsalStall (\r
96   IN UINTN  Microseconds\r
97   )\r
98 ;\r
99 \r
100 /**\r
101   Wrapper for the EsalSetNewPalEntryFunctionId service in the Extended SAL PAL Services Services Class.\r
102   \r
103   This function is a wrapper for the EsalSetNewPalEntryFunctionId service in the Extended SAL\r
104   PAL Services Services Class. See EsalSetNewPalEntryFunctionId in the Extended SAL Specification.\r
105 \r
106   @param  PhyicalAddress         If TRUE, then PalEntryPoint is a physical address.\r
107                                  If FALSE, then PalEntryPoint is a virtual address.\r
108   @param  PalEntryPoint          The PAL Entry Point being set.\r
109 \r
110 **/\r
111 SAL_RETURN_REGS\r
112 EFIAPI\r
113 EsalSetNewPalEntry (\r
114   IN BOOLEAN  PhysicalAddress,\r
115   IN UINT64   PalEntryPoint\r
116   )\r
117 ;\r
118 \r
119 /**\r
120   Wrapper for the EsalGetStateBufferFunctionId service in the Extended SAL PAL Services Services Class.\r
121   \r
122   This function is a wrapper for the EsalGetStateBufferFunctionId service in the Extended SAL\r
123   PAL Services Services Class. See EsalGetStateBufferFunctionId in the Extended SAL Specification.\r
124 \r
125   @param  PhyicalAddress         If TRUE, then PalEntryPoint is a physical address.\r
126                                  If FALSE, then PalEntryPoint is a virtual address.\r
127 \r
128 **/\r
129 SAL_RETURN_REGS\r
130 EFIAPI\r
131 EsalGetNewPalEntry (\r
132   IN BOOLEAN  PhysicalAddress\r
133   )\r
134 ;\r
135 \r
136 /**\r
137   Wrapper for the EsalGetStateBufferFunctionId  service in the Extended SAL MCA Log Services Class.\r
138   \r
139   This function is a wrapper for the EsalGetStateBufferFunctionId service in the Extended SAL\r
140   MCA Log Services Class. See EsalGetStateBufferFunctionId in the Extended SAL Specification.\r
141 \r
142   @param  McaType         See type parameter in the SAL Procedure SAL_GET_STATE_INFO.\r
143   @param  McaBuffer       A pointer to the base address of the returned buffer. Copied from SAL_RETURN_REGS.r9.\r
144   @param  BufferSize      A pointer to the size, in bytes, of the returned buffer.  Copied from SAL_RETURN_REGS.r10.\r
145 \r
146 **/\r
147 SAL_RETURN_REGS\r
148 EFIAPI\r
149 EsalGetStateBufferLeon (\r
150   IN  UINT64  McaType,\r
151   OUT UINT8   **McaBuffer,\r
152   OUT UINTN   *BufferSize\r
153   )\r
154 ;\r
155 \r
156 /**\r
157   Wrapper for the EsalSaveStateBufferFunctionId service in the Extended SAL MCA Log Services Class.\r
158   \r
159   This function is a wrapper for the EsalSaveStateBufferFunctionId service in the Extended SAL\r
160   MCA Log Services Class. See EsalSaveStateBufferFunctionId in the Extended SAL Specification.\r
161 \r
162   @param  McaType         See type parameter in the SAL Procedure SAL_GET_STATE_INFO.\r
163 \r
164 **/\r
165 SAL_RETURN_REGS\r
166 EFIAPI\r
167 EsalSaveStateBufferLeon (\r
168   IN  UINT64  McaType\r
169   )\r
170 ;\r
171 \r
172 /**\r
173   Wrapper for the EsalGetVectorsFunctionId service in the Extended SAL MCA Log Services Class.\r
174   \r
175   This function is a wrapper for the EsalGetVectorsFunctionId service in the Extended SAL\r
176   MCA Log Services Class. See EsalGetVectorsFunctionId in the Extended SAL Specification.\r
177 \r
178   @param  VectorType         The vector type to retrieve.\r
179                              0 ¨C MCA, 1 - BSP INIT, 2 ¨C BOOT_RENDEZ, 3 ¨C AP INIT.\r
180 \r
181 **/\r
182 SAL_RETURN_REGS\r
183 EFIAPI\r
184 EsalGetVectorsLeon (\r
185   IN  UINT64  VectorType\r
186   )\r
187 ;\r
188 \r
189 /**\r
190   Wrapper for the EsalMcGetParamsFunctionId service in the Extended SAL MCA Log Services Class.\r
191   \r
192   This function is a wrapper for the EsalMcGetParamsFunctionId service in the Extended SAL\r
193   MCA Log Services Class. See EsalMcGetParamsFunctionId in the Extended SAL Specification.\r
194 \r
195   @param  ParamInfoType         The parameter type to retrieve.\r
196                                 1 ¨C rendezvous interrupt\r
197                                 2 ¨C wake up\r
198                                 3 ¨C Corrected Platform Error Vector.\r
199 \r
200 **/\r
201 SAL_RETURN_REGS\r
202 EFIAPI\r
203 EsalMcGetParamsLeon (\r
204   IN  UINT64  ParamInfoType\r
205   )\r
206 ;\r
207 \r
208 /**\r
209   Wrapper for the EsalMcGetParamsFunctionId service in the Extended SAL MCA Log Services Class.\r
210   \r
211   This function is a wrapper for the EsalMcGetParamsFunctionId service in the Extended SAL\r
212   MCA Log Services Class. See EsalMcGetParamsFunctionId in the Extended SAL Specification.\r
213 \r
214 **/\r
215 SAL_RETURN_REGS\r
216 EFIAPI\r
217 EsalMcGetMcParamsLeon (\r
218   VOID\r
219   )\r
220 ;\r
221 \r
222 /**\r
223   Wrapper for the EsalGetMcCheckinFlagsFunctionId service in the Extended SAL MCA Log Services Class.\r
224   \r
225   This function is a wrapper for the EsalGetMcCheckinFlagsFunctionId service in the Extended SAL\r
226   MCA Log Services Class. See EsalGetMcCheckinFlagsFunctionId in the Extended SAL Specification.\r
227 \r
228   @param  CpuIndex         The index of the CPU in the set of enabled CPUs to check.\r
229 \r
230 **/\r
231 SAL_RETURN_REGS\r
232 EFIAPI\r
233 EsalGetMcCheckinFlagsLeon (\r
234   IN  UINT64  CpuIndex\r
235   )\r
236 ;\r
237 \r
238 /**\r
239   Wrapper for the EsalAddCpuDataFunctionId service in the Extended SAL MCA Log Services Class.\r
240   \r
241   This function is a wrapper for the EsalAddCpuDataFunctionId service in the Extended SAL\r
242   MCA Log Services Class. See EsalAddCpuDataFunctionId in the Extended SAL Specification.\r
243 \r
244   @param  CpuGlobalId         The Global ID for the CPU being added.\r
245   @param  Enabled             The enable flag for the CPU being added.\r
246                               TRUE means the CPU is enabled.\r
247                               FALSE means the CPU is disabled.\r
248   @param  PalCompatibility    The PAL Compatibility value for the CPU being added.\r
249 \r
250 **/\r
251 SAL_RETURN_REGS\r
252 EFIAPI\r
253 EsalAddCpuData (\r
254   IN UINT64   CpuGlobalId,\r
255   IN BOOLEAN  Enabled,\r
256   IN UINT64   PalCompatibility\r
257   )\r
258 ;\r
259 \r
260 /**\r
261   Wrapper for the EsalRemoveCpuDataFunctionId service in the Extended SAL MCA Log Services Class.\r
262   \r
263   This function is a wrapper for the EsalRemoveCpuDataFunctionId service in the Extended SAL\r
264   MCA Log Services Class. See EsalRemoveCpuDataFunctionId in the Extended SAL Specification.\r
265 \r
266   @param  CpuGlobalId         The Global ID for the CPU being removed.\r
267 \r
268 **/\r
269 SAL_RETURN_REGS\r
270 EFIAPI\r
271 EsalRemoveCpuData (\r
272   IN UINT64  CpuGlobalId\r
273   )\r
274 ;\r
275 \r
276 /**\r
277   Wrapper for the EsalModifyCpuDataFunctionId service in the Extended SAL MCA Log Services Class.\r
278   \r
279   This function is a wrapper for the EsalModifyCpuDataFunctionId service in the Extended SAL\r
280   MCA Log Services Class. See EsalModifyCpuDataFunctionId in the Extended SAL Specification.\r
281 \r
282   @param  CpuGlobalId         The Global ID for the CPU being modified.\r
283   @param  Enabled             The enable flag for the CPU being modified.\r
284                               TRUE means the CPU is enabled.\r
285                               FALSE means the CPU is disabled.\r
286   @param  PalCompatibility    The PAL Compatibility value for the CPU being modified.\r
287 \r
288 **/\r
289 SAL_RETURN_REGS\r
290 EFIAPI\r
291 EsalModifyCpuData (\r
292   IN UINT64   CpuGlobalId,\r
293   IN BOOLEAN  Enabled,\r
294   IN UINT64   PalCompatibility\r
295   )\r
296 ;\r
297 \r
298 /**\r
299   Wrapper for the EsalGetCpuDataByIdFunctionId service in the Extended SAL MCA Log Services Class.\r
300   \r
301   This function is a wrapper for the EsalGetCpuDataByIdFunctionId service in the Extended SAL\r
302   MCA Log Services Class. See EsalGetCpuDataByIdFunctionId in the Extended SAL Specification.\r
303 \r
304   @param  CpuGlobalId         The Global ID for the CPU being looked up.\r
305   @param  IndexByEnabledCpu   If TRUE, then the index in the set of enabled CPUs in the database is returned.\r
306                               If FALSE, then the index in the set of all CPUs in the database is returned.\r
307 \r
308 **/\r
309 SAL_RETURN_REGS\r
310 EFIAPI\r
311 EsalGetCpuDataById (\r
312   IN UINT64   CpuGlobalId,\r
313   IN BOOLEAN  IndexByEnabledCpu\r
314   )\r
315 ;\r
316 \r
317 /**\r
318   Wrapper for the EsalGetCpuDataByIndexFunctionId service in the Extended SAL MCA Log Services Class.\r
319   \r
320   This function is a wrapper for the EsalGetCpuDataByIndexFunctionId service in the Extended SAL\r
321   MCA Log Services Class. See EsalGetCpuDataByIndexFunctionId in the Extended SAL Specification.\r
322 \r
323   @param  Index               The Global ID for the CPU being modified.\r
324   @param  IndexByEnabledCpu   If TRUE, then the index in the set of enabled CPUs in the database is returned.\r
325                               If FALSE, then the index in the set of all CPUs in the database is returned.\r
326 \r
327 **/\r
328 SAL_RETURN_REGS\r
329 EFIAPI\r
330 EsalGetCpuDataByIndex (\r
331   IN UINT64   Index,\r
332   IN BOOLEAN  IndexByEnabledCpu\r
333   )\r
334 ;\r
335 \r
336 /**\r
337   Wrapper for the EsalWhoAmIFunctionId service in the Extended SAL MCA Log Services Class.\r
338   \r
339   This function is a wrapper for the EsalWhoAmIFunctionId service in the Extended SAL\r
340   MCA Log Services Class. See EsalWhoAmIFunctionId in the Extended SAL Specification.\r
341 \r
342   @param  IndexByEnabledCpu   If TRUE, then the index in the set of enabled CPUs in the database is returned.\r
343                               If FALSE, then the index in the set of all CPUs in the database is returned.\r
344 \r
345 **/\r
346 SAL_RETURN_REGS\r
347 EFIAPI\r
348 EsalWhoAmI (\r
349   IN BOOLEAN  IndexByEnabledCpu\r
350   )\r
351 ;\r
352 \r
353 /**\r
354   Wrapper for the EsalNumProcessors service in the Extended SAL MCA Log Services Class.\r
355   \r
356   This function is a wrapper for the EsalNumProcessors service in the Extended SAL\r
357   MCA Log Services Class. See EsalNumProcessors in the Extended SAL Specification.\r
358 \r
359 **/\r
360 SAL_RETURN_REGS\r
361 EFIAPI\r
362 EsalNumProcessors (\r
363   VOID\r
364   )\r
365 ;\r
366 \r
367 /**\r
368   Wrapper for the EsalSetMinStateFnctionId service in the Extended SAL MCA Log Services Class.\r
369   \r
370   This function is a wrapper for the EsalSetMinStateFnctionId service in the Extended SAL\r
371   MCA Log Services Class. See EsalSetMinStateFnctionId in the Extended SAL Specification.\r
372 \r
373   @param  CpuGlobalId       The Global ID for the CPU whose MINSTATE pointer is being set.\r
374   @param  MinStatePointer   The physical address of the MINSTATE buffer for the CPU specified by CpuGlobalId.\r
375 \r
376 **/\r
377 SAL_RETURN_REGS\r
378 EFIAPI\r
379 EsalSetMinState (\r
380   IN UINT64                CpuGlobalId,\r
381   IN EFI_PHYSICAL_ADDRESS  MinStatePointer\r
382   )\r
383 ;\r
384 \r
385 /**\r
386   Wrapper for the EsalGetMinStateFunctionId service in the Extended SAL MCA Log Services Class.\r
387   \r
388   This function is a wrapper for the EsalGetMinStateFunctionId service in the Extended SAL\r
389   MCA Log Services Class. See EsalGetMinStateFunctionId in the Extended SAL Specification.\r
390 \r
391   @param  CpuGlobalId   The Global ID for the CPU whose MINSTATE pointer is being retrieved.\r
392 \r
393 **/\r
394 SAL_RETURN_REGS\r
395 EFIAPI\r
396 EsalGetMinState (\r
397   IN UINT64  CpuGlobalId\r
398   )\r
399 ;\r
400 \r
401 /**\r
402   Wrapper for the EsalMcsGetStateInfoFunctionId service in the Extended SAL MCA Log Services Class.\r
403   \r
404   This function is a wrapper for the EsalMcsGetStateInfoFunctionId service in the Extended SAL\r
405   MCA Log Services Class. See EsalMcsGetStateInfoFunctionId in the Extended SAL Specification.\r
406 \r
407   @param  CpuGlobalId               The Global ID for the CPU whose MCA state buffer is being retrieved.\r
408   @param  StateBufferPointer        A pointer to the returned MCA state buffer.\r
409   @param  RequiredStateBufferSize   A pointer to the size, in bytes, of the returned MCA state buffer.\r
410 \r
411 **/\r
412 SAL_RETURN_REGS\r
413 EFIAPI\r
414 EsalMcaGetStateInfo (\r
415   IN  UINT64                CpuGlobalId,\r
416   OUT EFI_PHYSICAL_ADDRESS  *StateBufferPointer,\r
417   OUT UINT64                *RequiredStateBufferSize\r
418   )\r
419 ;\r
420 \r
421 /**\r
422   Wrapper for the EsalMcaRegisterCpuFunctionId service in the Extended SAL MCA Log Services Class.\r
423   \r
424   This function is a wrapper for the EsalMcaRegisterCpuFunctionId service in the Extended SAL\r
425   MCA Log Services Class. See EsalMcaRegisterCpuFunctionId in the Extended SAL Specification.\r
426 \r
427   @param  CpuGlobalId          The Global ID for the CPU whose MCA state buffer is being set.\r
428   @param  StateBufferPointer   A pointer to the MCA state buffer.\r
429 \r
430 **/\r
431 SAL_RETURN_REGS\r
432 EFIAPI\r
433 EsalMcaRegisterCpu (\r
434   IN UINT64                CpuGlobalId,\r
435   IN EFI_PHYSICAL_ADDRESS  StateBufferPointer\r
436   )\r
437 ;\r
438 \r
439 #endif\r