]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/SalDriverLib.h
Add in the 1st version of ECP.
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / Dxe / Include / Ipf / SalDriverLib.h
Content-type: text/html ]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/SalDriverLib.h


500 - Internal Server Error

Malformed UTF-8 character (fatal) at (eval 6) line 1, <$fd> line 1354.
CommitLineData
3eb9473e 1/*++\r
2\r
3Copyright (c) 2004, 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 SalDriverLib.h\r
15 \r
16Abstract:\r
17\r
18 SAL Driver Lib\r
19\r
20Revision History\r
21\r
22--*/\r
23\r
24#ifndef _SAL_DRIVER_LIB_H_\r
25#define _SAL_DRIVER_LIB_H_\r
26\r
27#include "Tiano.h"\r
28#include "EfiDriverLib.h"\r
29#include "SalApi.h"\r
30\r
31#include EFI_PROTOCOL_DEFINITION (ExtendedSalBootService)\r
32#include EFI_PROTOCOL_DEFINITION (ExtendedSalGuid)\r
33\r
34//\r
35// Assembly Functions\r
36//\r
37SAL_RETURN_REGS\r
38LibGetEsalPhyData (\r
39 VOID\r
40 )\r
41/*++\r
42\r
43Routine Description:\r
44\r
45 Get Esal global data in physical mode.\r
46\r
47Arguments:\r
48\r
49 None\r
50\r
51Returns:\r
52\r
53 Output regs\r
54\r
55--*/\r
56;\r
57\r
58SAL_RETURN_REGS\r
59LibGetEsalVirtData (\r
60 VOID\r
61 )\r
62/*++\r
63\r
64Routine Description:\r
65\r
66 Get Esal global data in virtual mode.\r
67\r
68Arguments:\r
69\r
70 None\r
71\r
72Returns:\r
73\r
74 Output regs\r
75\r
76--*/\r
77;\r
78\r
79SAL_RETURN_REGS\r
80LibSetEsalPhyData (\r
81 IN VOID *Ptr,\r
82 IN UINT64 GP\r
83 )\r
84/*++\r
85\r
86Routine Description:\r
87\r
88 Set Esal global data in physical mode.\r
89\r
90Arguments:\r
91\r
92 Ptr - Pointer to the data\r
93 GP - Global pointer\r
94\r
95Returns:\r
96\r
97 Output regs\r
98\r
99--*/\r
100;\r
101\r
102SAL_RETURN_REGS\r
103LibSetEsalVirtData (\r
104 IN VOID *Ptr,\r
105 IN UINT64 GP\r
106 )\r
107/*++\r
108\r
109Routine Description:\r
110\r
111 Set Esal global data in virtual mode.\r
112\r
113Arguments:\r
114\r
115 Ptr - Pointer to the data\r
116 GP - Global pointer\r
117\r
118Returns:\r
119\r
120 Output regs\r
121\r
122--*/\r
123;\r
124\r
125SAL_RETURN_REGS\r
126LibGetGlobalPhyData (\r
127 VOID\r
128 )\r
129/*++\r
130\r
131Routine Description:\r
132\r
133 Get Esal global data in physical mode.\r
134\r
135Arguments:\r
136\r
137 None\r
138\r
139Returns:\r
140\r
141 Output regs\r
142\r
143--*/\r
144;\r
145\r
146SAL_RETURN_REGS\r
147LibGetGlobalVirtData (\r
148 VOID\r
149 )\r
150/*++\r
151\r
152Routine Description:\r
153\r
154 Get Esal global data in virtual mode.\r
155\r
156Arguments:\r
157\r
158 None\r
159\r
160Returns:\r
161\r
162 Output regs\r
163\r
164--*/\r
165;\r
166\r
167SAL_RETURN_REGS\r
168LibSetGlobalPhyData (\r
169 IN VOID *Ptr,\r
170 IN UINT64 GP\r
171 )\r
172/*++\r
173\r
174Routine Description:\r
175\r
176 Set Esal global data in physical mode.\r
177\r
178Arguments:\r
179\r
180 Ptr - Pointer to the data\r
181 GP - Global pointer\r
182\r
183Returns:\r
184\r
185 Output regs\r
186\r
187--*/\r
188;\r
189\r
190SAL_RETURN_REGS\r
191LibSetGlobalVirtData (\r
192 IN VOID *Ptr,\r
193 IN UINT64 GP\r
194 )\r
195/*++\r
196\r
197Routine Description:\r
198\r
199 Set Esal global data in virtual mode.\r
200\r
201Arguments:\r
202\r
203 Ptr - Pointer to the data\r
204 GP - Global pointer\r
205\r
206Returns:\r
207\r
208 Output regs\r
209\r
210--*/\r
211;\r
212\r
213SAL_RETURN_REGS\r
214GetIrrData (\r
215 VOID\r
216 )\r
217/*++\r
218\r
219Routine Description:\r
220\r
221 Get interrupt request register.\r
222\r
223Arguments:\r
224\r
225 None\r
226\r
227Returns:\r
228\r
229 Output regs\r
230\r
231--*/\r
232;\r
233\r
234VOID\r
235PrepareApsForHandOverToOS (\r
236 VOID\r
237 )\r
238/*++\r
239\r
240Routine Description:\r
241\r
242 Prepare AP info for hand over to OS.\r
243\r
244Arguments:\r
245\r
246 None\r
247\r
248Returns:\r
249\r
250 None\r
251\r
252--*/\r
253;\r
254\r
255VOID\r
256HandOverApsToOS (\r
257 IN UINT64 a1,\r
258 IN UINT64 a2,\r
259 IN UINT64 a3\r
260 )\r
261/*++\r
262\r
263Routine Description:\r
264\r
265 Hand over AP info to OS.\r
266\r
267Arguments:\r
268\r
269 a1 - Address to call into\r
270 \r
271 a2 - GP\r
272 \r
273 a3 - Undefined\r
274\r
275Returns:\r
276\r
277 None\r
278\r
279--*/\r
280;\r
281\r
282SAL_RETURN_REGS\r
283GetPsrData (\r
284 VOID\r
285 )\r
286/*++\r
287\r
288Routine Description:\r
289\r
290 Get PSR register.\r
291\r
292Arguments:\r
293\r
294 None\r
295\r
296Returns:\r
297\r
298 Output regs.\r
299\r
300--*/\r
301;\r
302\r
303SAL_RETURN_REGS\r
304GetProcIdData (\r
305 VOID\r
306 )\r
307/*++\r
308\r
309Routine Description:\r
310\r
311 Get LID\r
312\r
313Arguments:\r
314\r
315 None\r
316\r
317Returns:\r
318\r
319 Output regs\r
320\r
321--*/\r
322;\r
323\r
324VOID\r
325SwitchCpuStack (\r
326 IN UINT64 NewBsp,\r
327 IN UINT64 OldBsp\r
328 )\r
329/*++\r
330\r
331Routine Description:\r
332\r
333 Switch BSP\r
334\r
335Arguments:\r
336\r
337 NewBsp - New BSP index\r
338 OldBsp - Old BSP index\r
339\r
340Returns:\r
341\r
342 None\r
343\r
344--*/\r
345;\r
346\r
347//\r
348// SAL Reset Class\r
349//\r
350VOID\r
351SalResetSystem (\r
352 IN EFI_RESET_TYPE ResetType,\r
353 IN EFI_STATUS ResetStatus,\r
354 IN UINTN DataSize,\r
355 IN CHAR16 *ResetData\r
356 )\r
357/*++\r
358\r
359Routine Description:\r
360\r
361 Reset system\r
362\r
363Arguments:\r
364\r
365 ResetType - Reset type\r
366 ResetStatus - Reset status\r
367 DataSize - Size of ResetData\r
368 ResetData - Description string\r
369\r
370Returns:\r
371\r
372 None\r
373\r
374--*/\r
375;\r
376\r
377//\r
378// PAL PROC Class\r
379//\r
380SAL_RETURN_REGS\r
381SalPalProc (\r
382 IN UINT64 Arg1,\r
383 IN UINT64 Arg2,\r
384 IN UINT64 Arg3,\r
385 IN UINT64 Arg4\r
386 )\r
387/*++\r
388\r
389Routine Description:\r
390\r
391 Call pal proc.\r
392\r
393Arguments:\r
394\r
395 Arg1 - Pal call index\r
396 Arg2 - First arg\r
397 Arg3 - Second arg\r
398 Arg4 - Third arg\r
399\r
400Returns:\r
401\r
402 Output regs\r
403\r
404--*/\r
405;\r
406\r
407SAL_RETURN_REGS\r
408SalRegisterNewPalEntry (\r
409 IN BOOLEAN PhysicalPalAddress,\r
410 IN EFI_PHYSICAL_ADDRESS NewPalAddress\r
411 )\r
412/*++\r
413\r
414Routine Description:\r
415\r
416 Register Pal entry.\r
417\r
418Arguments:\r
419\r
420 PhysicalPalAddress - The address is physical or virtual\r
421 NewPalAddress - New Pal entry address\r
422\r
423Returns:\r
424\r
425 Output regs\r
426\r
427--*/\r
428;\r
429\r
430SAL_RETURN_REGS\r
431SalGetPalEntryPointer (\r
432 IN BOOLEAN PhysicalPalAddress\r
433 )\r
434/*++\r
435\r
436Routine Description:\r
437\r
438 Get Pal entry.\r
439\r
440Arguments:\r
441\r
442 PhysicalPalAddress - The address is physical or virtual\r
443\r
444Returns:\r
445\r
446 Output regs\r
447\r
448--*/\r
449;\r
450\r
451//\r
452// SAL MTC Class\r
453//\r
454EFI_STATUS\r
455SalGetNextHighMonotonicCount (\r
456 OUT UINT32 *HighCount\r
457 )\r
458/*++\r
459\r
460Routine Description:\r
461\r
462 Get next high 32 bits of monotonic count.\r
463\r
464Arguments:\r
465\r
466 HighCount - High 32 bits of monotonic count.\r
467\r
468Returns:\r
469\r
470 Status code\r
471\r
472--*/\r
473;\r
474\r
475//\r
476// SAL BASE Class\r
477//\r
478SAL_RETURN_REGS\r
479SalProcSetVectors (\r
480 IN UINT64 SalVectorType,\r
481 IN UINT64 PhyAddr1,\r
482 IN UINT64 Gp1,\r
483 IN UINT64 LengthCs1,\r
484 IN UINT64 PhyAddr2,\r
485 IN UINT64 Gp2,\r
486 IN UINT64 LengthCs2\r
487 )\r
488/*++\r
489\r
490Routine Description:\r
491\r
492 Set vectors.\r
493\r
494Arguments:\r
495\r
496 SalVectorType - Vector type\r
497 PhyAddr1 - OS MCA entry point\r
498 Gp1 - GP for OS MCA entry\r
499 LengthCs1 - Length of OS MCA \r
500 PhyAddr2 - OS INIT entry point\r
501 Gp2 - GP for OS Init entry\r
502 LengthCs2 - Length of OS INIT\r
503\r
504Returns:\r
505\r
506 Output regs\r
507\r
508--*/\r
509;\r
510\r
511SAL_RETURN_REGS\r
512SalProcMcRendez (\r
513 VOID\r
514 )\r
515/*++\r
516\r
517Routine Description:\r
518\r
519 Mc rendezvous function.\r
520\r
521Arguments:\r
522\r
523 None\r
524\r
525Returns:\r
526\r
527 Output regs\r
528\r
529--*/\r
530;\r
531\r
532SAL_RETURN_REGS\r
533SalProcMcSetParams (\r
534 IN UINT64 ParamType,\r
535 IN UINT64 IntOrMem,\r
536 IN UINT64 IntOrMemVal,\r
537 IN UINT64 Timeout,\r
538 IN UINT64 McaOpt\r
539 )\r
540/*++\r
541\r
542Routine Description:\r
543\r
544 Set MCA parameters.\r
545\r
546Arguments:\r
547\r
548 ParamType - Parameter type\r
549 IntOrMem - Interrupt or memory address\r
550 IntOrMemVal - Interrupt number or memory address value\r
551 Timeout - Time out value\r
552 McaOpt - Option for MCA\r
553\r
554Returns:\r
555\r
556 Output regs\r
557\r
558--*/\r
559;\r
560\r
561SAL_RETURN_REGS\r
562EsalProcGetVectors (\r
563 IN UINT64 VectorType\r
564 )\r
565/*++\r
566\r
567Routine Description:\r
568\r
569 Get OS MCA vector.\r
570\r
571Arguments:\r
572\r
573 VectorType - Vector type\r
574\r
575Returns:\r
576\r
577 Output regs\r
578\r
579--*/\r
580;\r
581\r
582SAL_RETURN_REGS\r
583EsalProcMcGetParams (\r
584 IN UINT64 ParamInfoType\r
585 )\r
586/*++\r
587\r
588Routine Description:\r
589\r
590 Get MCA parameter.\r
591\r
592Arguments:\r
593\r
594 ParamInfoType - Parameter info type\r
595\r
596Returns:\r
597\r
598 Output regs\r
599\r
600--*/\r
601;\r
602\r
603SAL_RETURN_REGS\r
604EsalProcMcGetMcParams (\r
605 VOID\r
606 )\r
607/*++\r
608\r
609Routine Description:\r
610\r
611 Get MCA parameter.\r
612\r
613Arguments:\r
614\r
615 \r
616Returns:\r
617\r
618 Output regs\r
619\r
620--*/\r
621;\r
622\r
623SAL_RETURN_REGS\r
624EsalProcGetMcCheckinFlags (\r
625 IN UINT64 ProcessorUnit\r
626 )\r
627/*++\r
628\r
629Routine Description:\r
630\r
631 Get process status.\r
632\r
633Arguments:\r
634\r
635 ProcessorUnit - Processor Index\r
636\r
637Returns:\r
638\r
639 Output regs\r
640\r
641--*/\r
642;\r
643\r
644//\r
645// Sal Base Class enums\r
646//\r
647typedef enum {\r
648 McaVector,\r
649 BspInitVector,\r
650 BootRendezVector,\r
651 ApInitVector\r
652} ESAL_GET_VECTOR_TYPE;\r
653\r
654//\r
655// Sal RTC Class\r
656//\r
657EFI_STATUS\r
658SalGetTime (\r
659 OUT EFI_TIME *Time,\r
660 OUT EFI_TIME_CAPABILITIES *Capabilities\r
661 )\r
662/*++\r
663\r
664Routine Description:\r
665\r
666 Returns the current time and date information, and the time-keeping \r
667 capabilities of the hardware platform.\r
668\r
669Arguments:\r
670\r
671 Time - A pointer to storage to receive a snapshot of the current time.\r
672