]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/SalDriverLib.h
Update the copyright notice format
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / Dxe / Include / Ipf / SalDriverLib.h
1 /*++
2
3 Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12 Module Name:
13
14 SalDriverLib.h
15
16 Abstract:
17
18 SAL Driver Lib
19
20 Revision History
21
22 --*/
23
24 #ifndef _SAL_DRIVER_LIB_H_
25 #define _SAL_DRIVER_LIB_H_
26
27 #include "Tiano.h"
28 #include "EfiDriverLib.h"
29 #include "SalApi.h"
30
31 #include EFI_PROTOCOL_DEFINITION (ExtendedSalBootService)
32 #include EFI_PROTOCOL_DEFINITION (ExtendedSalGuid)
33
34 //
35 // Assembly Functions
36 //
37 SAL_RETURN_REGS
38 LibGetEsalPhyData (
39 VOID
40 )
41 /*++
42
43 Routine Description:
44
45 Get Esal global data in physical mode.
46
47 Arguments:
48
49 None
50
51 Returns:
52
53 Output regs
54
55 --*/
56 ;
57
58 SAL_RETURN_REGS
59 LibGetEsalVirtData (
60 VOID
61 )
62 /*++
63
64 Routine Description:
65
66 Get Esal global data in virtual mode.
67
68 Arguments:
69
70 None
71
72 Returns:
73
74 Output regs
75
76 --*/
77 ;
78
79 SAL_RETURN_REGS
80 LibSetEsalPhyData (
81 IN VOID *Ptr,
82 IN UINT64 GP
83 )
84 /*++
85
86 Routine Description:
87
88 Set Esal global data in physical mode.
89
90 Arguments:
91
92 Ptr - Pointer to the data
93 GP - Global pointer
94
95 Returns:
96
97 Output regs
98
99 --*/
100 ;
101
102 SAL_RETURN_REGS
103 LibSetEsalVirtData (
104 IN VOID *Ptr,
105 IN UINT64 GP
106 )
107 /*++
108
109 Routine Description:
110
111 Set Esal global data in virtual mode.
112
113 Arguments:
114
115 Ptr - Pointer to the data
116 GP - Global pointer
117
118 Returns:
119
120 Output regs
121
122 --*/
123 ;
124
125 SAL_RETURN_REGS
126 LibGetGlobalPhyData (
127 VOID
128 )
129 /*++
130
131 Routine Description:
132
133 Get Esal global data in physical mode.
134
135 Arguments:
136
137 None
138
139 Returns:
140
141 Output regs
142
143 --*/
144 ;
145
146 SAL_RETURN_REGS
147 LibGetGlobalVirtData (
148 VOID
149 )
150 /*++
151
152 Routine Description:
153
154 Get Esal global data in virtual mode.
155
156 Arguments:
157
158 None
159
160 Returns:
161
162 Output regs
163
164 --*/
165 ;
166
167 SAL_RETURN_REGS
168 LibSetGlobalPhyData (
169 IN VOID *Ptr,
170 IN UINT64 GP
171 )
172 /*++
173
174 Routine Description:
175
176 Set Esal global data in physical mode.
177
178 Arguments:
179
180 Ptr - Pointer to the data
181 GP - Global pointer
182
183 Returns:
184
185 Output regs
186
187 --*/
188 ;
189
190 SAL_RETURN_REGS
191 LibSetGlobalVirtData (
192 IN VOID *Ptr,
193 IN UINT64 GP
194 )
195 /*++
196
197 Routine Description:
198
199 Set Esal global data in virtual mode.
200
201 Arguments:
202
203 Ptr - Pointer to the data
204 GP - Global pointer
205
206 Returns:
207
208 Output regs
209
210 --*/
211 ;
212
213 SAL_RETURN_REGS
214 GetIrrData (
215 VOID
216 )
217 /*++
218
219 Routine Description:
220
221 Get interrupt request register.
222
223 Arguments:
224
225 None
226
227 Returns:
228
229 Output regs
230
231 --*/
232 ;
233
234 VOID
235 PrepareApsForHandOverToOS (
236 VOID
237 )
238 /*++
239
240 Routine Description:
241
242 Prepare AP info for hand over to OS.
243
244 Arguments:
245
246 None
247
248 Returns:
249
250 None
251
252 --*/
253 ;
254
255 VOID
256 HandOverApsToOS (
257 IN UINT64 a1,
258 IN UINT64 a2,
259 IN UINT64 a3
260 )
261 /*++
262
263 Routine Description:
264
265 Hand over AP info to OS.
266
267 Arguments:
268
269 a1 - Address to call into
270
271 a2 - GP
272
273 a3 - Undefined
274
275 Returns:
276
277 None
278
279 --*/
280 ;
281
282 SAL_RETURN_REGS
283 GetPsrData (
284 VOID
285 )
286 /*++
287
288 Routine Description:
289
290 Get PSR register.
291
292 Arguments:
293
294 None
295
296 Returns:
297
298 Output regs.
299
300 --*/
301 ;
302
303 SAL_RETURN_REGS
304 GetProcIdData (
305 VOID
306 )
307 /*++
308
309 Routine Description:
310
311 Get LID
312
313 Arguments:
314
315 None
316
317 Returns:
318
319 Output regs
320
321 --*/
322 ;
323
324 VOID
325 SwitchCpuStack (
326 IN UINT64 NewBsp,
327 IN UINT64 OldBsp
328 )
329 /*++
330
331 Routine Description:
332
333 Switch BSP
334
335 Arguments:
336
337 NewBsp - New BSP index
338 OldBsp - Old BSP index
339
340 Returns:
341
342 None
343
344 --*/
345 ;
346
347 //
348 // SAL Reset Class
349 //
350 VOID
351 SalResetSystem (
352 IN EFI_RESET_TYPE ResetType,
353 IN EFI_STATUS ResetStatus,
354 IN UINTN DataSize,
355 IN CHAR16 *ResetData
356 )
357 /*++
358
359 Routine Description:
360
361 Reset system
362
363 Arguments:
364
365 ResetType - Reset type
366 ResetStatus - Reset status
367 DataSize - Size of ResetData
368 ResetData - Description string
369
370 Returns:
371
372 None
373
374 --*/
375 ;
376
377 //
378 // PAL PROC Class
379 //
380 SAL_RETURN_REGS
381 SalPalProc (
382 IN UINT64 Arg1,
383 IN UINT64 Arg2,
384 IN UINT64 Arg3,
385 IN UINT64 Arg4
386 )
387 /*++
388
389 Routine Description:
390
391 Call pal proc.
392
393 Arguments:
394
395 Arg1 - Pal call index
396 Arg2 - First arg
397 Arg3 - Second arg
398 Arg4 - Third arg
399
400 Returns:
401
402 Output regs
403
404 --*/
405 ;
406
407 SAL_RETURN_REGS
408 SalRegisterNewPalEntry (
409 IN BOOLEAN PhysicalPalAddress,
410 IN EFI_PHYSICAL_ADDRESS NewPalAddress
411 )
412 /*++
413
414 Routine Description:
415
416 Register Pal entry.
417
418 Arguments:
419
420 PhysicalPalAddress - The address is physical or virtual
421 NewPalAddress - New Pal entry address
422
423 Returns:
424
425 Output regs
426
427 --*/
428 ;
429
430 SAL_RETURN_REGS
431 SalGetPalEntryPointer (
432 IN BOOLEAN PhysicalPalAddress
433 )
434 /*++
435
436 Routine Description:
437
438 Get Pal entry.
439
440 Arguments:
441
442 PhysicalPalAddress - The address is physical or virtual
443
444 Returns:
445
446 Output regs
447
448 --*/
449 ;
450
451 //
452 // SAL MTC Class
453 //
454 EFI_STATUS
455 SalGetNextHighMonotonicCount (
456 OUT UINT32 *HighCount
457 )
458 /*++
459
460 Routine Description:
461
462 Get next high 32 bits of monotonic count.
463
464 Arguments:
465
466 HighCount - High 32 bits of monotonic count.
467
468 Returns:
469
470 Status code
471
472 --*/
473 ;
474
475 //
476 // SAL BASE Class
477 //
478 SAL_RETURN_REGS
479 SalProcSetVectors (
480 IN UINT64 SalVectorType,
481 IN UINT64 PhyAddr1,
482 IN UINT64 Gp1,
483 IN UINT64 LengthCs1,
484 IN UINT64 PhyAddr2,
485 IN UINT64 Gp2,
486 IN UINT64 LengthCs2
487 )
488 /*++
489
490 Routine Description:
491
492 Set vectors.
493
494 Arguments:
495
496 SalVectorType - Vector type
497 PhyAddr1 - OS MCA entry point
498 Gp1 - GP for OS MCA entry
499 LengthCs1 - Length of OS MCA
500 PhyAddr2 - OS INIT entry point
501 Gp2 - GP for OS Init entry
502 LengthCs2 - Length of OS INIT
503
504 Returns:
505
506 Output regs
507
508 --*/
509 ;
510
511 SAL_RETURN_REGS
512 SalProcMcRendez (
513 VOID
514 )
515 /*++
516
517 Routine Description:
518
519 Mc rendezvous function.
520
521 Arguments:
522
523 None
524
525 Returns:
526
527 Output regs
528
529 --*/
530 ;
531
532 SAL_RETURN_REGS
533 SalProcMcSetParams (
534 IN UINT64 ParamType,
535 IN UINT64 IntOrMem,
536 IN UINT64 IntOrMemVal,
537 IN UINT64 Timeout,
538 IN UINT64 McaOpt
539 )
540 /*++
541
542 Routine Description:
543
544 Set MCA parameters.
545
546 Arguments:
547
548 ParamType - Parameter type
549 IntOrMem - Interrupt or memory address
550 IntOrMemVal - Interrupt number or memory address value
551 Timeout - Time out value
552 McaOpt - Option for MCA
553
554 Returns:
555
556 Output regs
557
558 --*/
559 ;
560
561 SAL_RETURN_REGS
562 EsalProcGetVectors (
563 IN UINT64 VectorType
564 )
565 /*++
566
567 Routine Description:
568
569 Get OS MCA vector.
570
571 Arguments:
572
573 VectorType - Vector type
574
575 Returns:
576
577 Output regs
578
579 --*/
580 ;
581
582 SAL_RETURN_REGS
583 EsalProcMcGetParams (
584 IN UINT64 ParamInfoType
585 )
586 /*++
587
588 Routine Description:
589
590 Get MCA parameter.
591
592 Arguments:
593
594 ParamInfoType - Parameter info type
595
596 Returns:
597
598 Output regs
599
600 --*/
601 ;
602
603 SAL_RETURN_REGS
604 EsalProcMcGetMcParams (
605 VOID
606 )
607 /*++
608
609 Routine Description:
610
611 Get MCA parameter.
612
613 Arguments:
614
615
616 Returns:
617
618 Output regs
619
620 --*/
621 ;
622
623 SAL_RETURN_REGS
624 EsalProcGetMcCheckinFlags (
625 IN UINT64 ProcessorUnit
626 )
627 /*++
628
629 Routine Description:
630
631 Get process status.
632
633 Arguments:
634
635 ProcessorUnit - Processor Index
636
637 Returns:
638
639 Output regs
640
641 --*/
642 ;
643
644 //
645 // Sal Base Class enums
646 //
647 typedef enum {
648 McaVector,
649 BspInitVector,
650 BootRendezVector,
651 ApInitVector
652 } ESAL_GET_VECTOR_TYPE;
653
654 //
655 // Sal RTC Class
656 //
657 EFI_STATUS
658 SalGetTime (
659 OUT EFI_TIME *Time,
660 OUT EFI_TIME_CAPABILITIES *Capabilities
661 )
662 /*++
663
664 Routine Description:
665
666 Returns the current time and date information, and the time-keeping
667 capabilities of the hardware platform.
668
669 Arguments:
670
671 Time - A pointer to storage to receive a snapshot of the current time.
672 Capabilities - An optional pointer to a buffer to receive the real time clock device's
673 capabilities.
674
675 Returns:
676
677 Status code
678
679 --*/
680 ;
681
682 EFI_STATUS
683 SalSetTime (
684 OUT EFI_TIME *Time
685 )
686 /*++
687
688 Routine Description:
689
690 Sets the current local time and date information.
691
692 Arguments:
693
694 Time - A pointer to the current time.
695
696 Returns:
697
698 Status code
699
700 --*/
701 ;
702
703 EFI_STATUS
704 SalGetWakeupTime (
705 OUT BOOLEAN *Enabled,
706 OUT BOOLEAN *Pending,
707 OUT EFI_TIME *Time
708 )
709 /*++
710
711 Routine Description:
712
713 Returns the current wakeup alarm clock setting.
714
715 Arguments:
716
717 Enabled - Indicates if the alarm is currently enabled or disabled.
718 Pending - Indicates if the alarm signal is pending and requires acknowledgement.
719 Time - The current alarm setting.
720
721 Returns:
722
723 Status code
724
725 --*/
726 ;
727
728 EFI_STATUS
729 SalSetWakeupTime (
730 IN BOOLEAN Enable,
731 IN EFI_TIME *Time
732 )
733 /*++
734
735 Routine Description:
736
737 Sets the system wakeup alarm clock time.
738
739 Arguments:
740
741 Enable - Enable or disable the wakeup alarm.
742 Time - If Enable is TRUE, the time to set the wakeup alarm for.
743 If Enable is FALSE, then this parameter is optional, and may be NULL.
744
745 Returns:
746
747 Status code
748
749 --*/
750 ;
751
752 SAL_RETURN_REGS
753 SalInitializeThreshold (
754 IN VOID *ThresholdStruct,
755 IN UINT64 Count,
756 IN UINT64 Duration
757 )
758 /*++
759
760 Routine Description:
761
762 Init threshold structure.
763
764 Arguments:
765
766 ThresholdStruct - Threshold structure
767 Count - Threshold count
768 Duration - Duration
769
770 Returns:
771
772 Output regs
773
774 --*/
775 ;
776
777 SAL_RETURN_REGS
778 SalBumpThresholdCount (
779 IN VOID *ThresholdStruct,
780 IN UINT64 Count,
781 IN UINT64 Duration
782 )
783 /*++
784
785 Routine Description:
786
787 Bump threshold count.
788
789 Arguments:
790
791 ThresholdStruct - Threshold structure
792 Count - Threshold count
793 Duration - Duration
794
795 Returns:
796
797 Output regs
798
799 --*/
800 ;
801
802 SAL_RETURN_REGS
803 SalGetThresholdCount (
804 IN VOID *ThresholdStruct,
805 IN UINT64 Count,
806 IN UINT64 Duration
807 )
808 /*++
809
810 Routine Description:
811
812 Get threshold structure.
813
814 Arguments:
815
816 ThresholdStruct - Threshold structure
817 Count - Threshold count
818 Duration - Duration
819
820 Returns:
821
822 Output regs
823
824 --*/
825 ;
826
827 //
828 // Common Lib Function
829 //
830 EFI_STATUS
831 RegisterEsalFunction (
832 IN UINT64 FunctionId,
833 IN EFI_GUID *ClassGuid,
834 IN SAL_INTERNAL_EXTENDED_SAL_PROC Function,
835 IN VOID *ModuleGlobal
836 )
837 /*++
838
839 Routine Description:
840
841 Register ESAL Class Function and it's asociated global.
842 This function is boot service only!
843
844 Arguments:
845 FunctionId - ID of function to register
846 ClassGuid - GUID of function class
847 Function - Function to register under ClassGuid/FunctionId pair
848 ModuleGlobal - Module global for Function.
849
850 Returns:
851 EFI_SUCCESS - If ClassGuid/FunctionId Function was registered.
852
853 --*/
854 ;
855
856 EFI_STATUS
857 EfiInitializeSalDriverLib (
858 IN BOOLEAN Runtime
859 )
860 /*++
861
862 Routine Description:
863
864 Initialize Sal driver lib.
865
866 Arguments:
867 Runtime - At runtime or not?
868
869 Returns:
870 Status code
871
872 --*/
873 ;
874
875 //
876 // MCA PMI INIT Registeration Functions.
877 //
878 EFI_STATUS
879 LibRegisterMcaFunction (
880 IN EFI_SAL_MCA_HANDLER McaHandler,
881 IN VOID *ModuleGlobal,
882 IN BOOLEAN MakeFirst,
883 IN BOOLEAN MakeLast
884 )
885 /*++
886
887 Routine Description:
888
889 Register MCA handler.
890
891 Arguments:
892 McaHandler - MCA handler
893 ModuleGlobal - Module global for function
894 MakeFirst - Make it as first?
895 MakeLast - Make it as last?
896
897 Returns:
898 Status code
899
900 --*/
901 ;
902
903 EFI_STATUS
904 LibRegisterPmiFunction (
905 IN EFI_SAL_PMI_HANDLER PmiHandler,
906 IN VOID *ModuleGlobal,
907 IN BOOLEAN MakeFirst,
908 IN BOOLEAN MakeLast
909 )
910 /*++
911
912 Routine Description:
913
914 Register PMI handler.
915
916 Arguments:
917 PmiHandler - PMI handler
918 ModuleGlobal - Module global for function
919 MakeFirst - Make it as first?
920 MakeLast - Make it as last?
921
922 Returns:
923 Status code
924
925 --*/
926 ;
927
928 EFI_STATUS
929 LibRegisterInitFunction (
930 IN EFI_SAL_INIT_HANDLER InitHandler,
931 IN VOID *ModuleGlobal,
932 IN BOOLEAN MakeFirst,
933 IN BOOLEAN MakeLast
934 )
935 /*++
936
937 Routine Description:
938
939 Register INIT handler.
940
941 Arguments:
942 InitHandler - INIT handler
943 ModuleGlobal - Module global for function
944 MakeFirst - Make it as first?
945 MakeLast - Make it as last?
946
947 Returns:
948 Status code
949
950 --*/
951 ;
952
953 //
954 // Base IO Class Functions
955 //
956 EFI_STATUS
957 ESalIoRead (
958 IN EFI_CPU_IO_PROTOCOL_WIDTH Width,
959 IN UINT64 Address,
960 IN UINTN Count,
961 IN OUT VOID *Buffer
962 )
963 /*++
964
965 Routine Description:
966
967 Io read operation.
968
969 Arguments:
970
971 Width - Width of read operation
972 Address - Start IO address to read
973 Count - Read count
974 Buffer - Buffer to store result
975
976 Returns:
977
978 Status code
979
980 --*/
981 ;
982
983 EFI_STATUS
984 ESalIoWrite (
985 IN EFI_CPU_IO_PROTOCOL_WIDTH Width,
986 IN UINT64 Address,
987 IN UINTN Count,
988 IN OUT VOID *Buffer
989 )
990 /*++
991
992 Routine Description:
993
994 Io write operation.
995
996 Arguments:
997
998 Width - Width of write operation
999 Address - Start IO address to write
1000 Count - Write count
1001 Buffer - Buffer to write to the address
1002
1003 Returns:
1004
1005 Status code
1006
1007 --*/
1008 ;
1009
1010 EFI_STATUS
1011 ESalMemRead (
1012 IN EFI_CPU_IO_PROTOCOL_WIDTH Width,
1013 IN UINT64 Address,
1014 IN UINTN Count,
1015 IN OUT VOID *Buffer
1016 )
1017 /*++
1018
1019 Routine Description:
1020 Perform a Memory mapped IO read into Buffer.
1021
1022 Arguments:
1023 Width - Width of each read transaction.
1024 Address - Memory mapped IO address to read
1025 Count - Number of Width quanta to read
1026 Buffer - Buffer to read data into. size is Width * Count
1027
1028 Returns:
1029 Status code
1030
1031 --*/
1032 ;
1033
1034 EFI_STATUS
1035 ESalMemWrite (
1036 IN EFI_CPU_IO_PROTOCOL_WIDTH Width,
1037 IN UINT64 Address,
1038 IN UINTN Count,
1039 IN OUT VOID *Buffer
1040 )
1041 /*++
1042
1043 Routine Description:
1044 Perform a memory mapped IO write into Buffer.
1045
1046 Arguments:
1047 Width - Width of write transaction, and repeat operation to use
1048 Address - IO address to write
1049 Count - Number of times to write the IO address.
1050 Buffer - Buffer to write data from. size is Width * Count
1051
1052 Returns:
1053 Status code
1054
1055 --*/
1056 ;
1057
1058 //
1059 // PCI Class Functions
1060 //
1061 SAL_RETURN_REGS
1062 SalPCIConfigRead (
1063 IN UINT64 Address,
1064 IN UINT64 Size
1065 )
1066 /*++
1067
1068 Routine Description:
1069 Pci config space read.
1070
1071 Arguments:
1072 Address - PCI address to read
1073 Size - Size to read
1074
1075 Returns:
1076 Output regs
1077
1078 --*/
1079 ;
1080
1081 SAL_RETURN_REGS
1082 SalPCIConfigWrite (
1083 IN UINT64 Address,
1084 IN UINT64 Size,
1085 IN UINT64 Value
1086 )
1087 /*++
1088
1089 Routine Description:
1090 Pci config space write.
1091
1092 Arguments:
1093 Address - PCI address to write
1094 Size - Size to write
1095 Value - Value to write
1096
1097 Returns:
1098 Output regs
1099
1100 --*/
1101 ;
1102
1103 //
1104 // MP Class Functions
1105 //
1106 SAL_RETURN_REGS
1107 LibMPAddCpuData (
1108 IN UINT64 CpuGlobalId,
1109 IN BOOLEAN Enabled,
1110 IN UINT64 PalCompatability
1111 )
1112 /*++
1113
1114 Routine Description:
1115 Add CPU data.
1116
1117 Arguments:
1118 CpuGlobalId - CPU ID
1119 Enabled - Enabled or not
1120 PalCompatability - Pal compatability
1121
1122 Returns:
1123 Output regs
1124
1125 --*/
1126 ;
1127
1128 SAL_RETURN_REGS
1129 LibMPRemoveCpuData (
1130 IN UINT64 CpuGlobalId
1131 )
1132 /*++
1133
1134 Routine Description:
1135 Remove CPU data.
1136
1137 Arguments:
1138 CpuGlobalId - CPU ID
1139
1140 Returns:
1141 Output regs
1142
1143 --*/
1144 ;
1145
1146 SAL_RETURN_REGS
1147 LibMPModifyCpuData (
1148 IN UINT64 CpuGlobalId,
1149 IN BOOLEAN Enabled,
1150 IN UINT64 PalCompatability
1151 )
1152 /*++
1153
1154 Routine Description:
1155 Modify CPU data.
1156
1157 Arguments:
1158 CpuGlobalId - CPU ID
1159 Enabled - Enabled or not
1160 PalCompatability - Pal compatability
1161
1162 Returns:
1163 Output regs
1164
1165 --*/
1166 ;
1167
1168 SAL_RETURN_REGS
1169 LibMPGetCpuDataByID (
1170 IN UINT64 CpuGlobalId,
1171 IN BOOLEAN IndexByEnabledCpu
1172 )
1173 /*++
1174
1175 Routine Description:
1176 Get CPU data.
1177
1178 Arguments:
1179 CpuGlobalId - CPU ID
1180 IndexByEnabledCpu - Whether indexed by enabled CPU
1181
1182 Returns:
1183 Output regs
1184
1185 --*/
1186 ;
1187
1188 SAL_RETURN_REGS
1189 LibMPGetCpuDataByIndex (
1190 IN UINT64 Index,
1191 IN BOOLEAN IndexByEnabledCpu
1192 )
1193 /*++
1194
1195 Routine Description:
1196 Get CPU data.
1197
1198 Arguments:
1199 Index - CPU index
1200 IndexByEnabledCpu - Whether indexed by enabled CPU
1201
1202 Returns:
1203 Output regs
1204
1205 --*/
1206 ;
1207
1208 SAL_RETURN_REGS
1209 LibMPSendIpi (
1210 IN UINT64 ProcessorNumber,
1211 IN UINT64 VectorNumber,
1212 IN EFI_DELIVERY_MODE DeliveryMode,
1213 IN BOOLEAN IRFlag
1214 )
1215 /*++
1216
1217 Routine Description:
1218 Send IPI.
1219
1220 Arguments:
1221 ProcessorNumber - Processor number
1222 VectorNumber - Vector number
1223 DeliveryMode - Delivery mode
1224 IRFlag - Interrupt Redirection flag
1225
1226 Returns:
1227 Output regs
1228
1229 --*/
1230 ;
1231
1232 SAL_RETURN_REGS
1233 LibMpCurrentProcessor (
1234 IN BOOLEAN IndexByEnabledCpu
1235 )
1236 /*++
1237
1238 Routine Description:
1239 Get current processor index.
1240
1241 Arguments:
1242 IndexByEnabledCpu - Whether indexed by enabled CPU
1243
1244 Returns:
1245 Output regs
1246
1247 --*/
1248 ;
1249
1250 SAL_RETURN_REGS
1251 LibGetNumProcessors (
1252 VOID
1253 )
1254 /*++
1255
1256 Routine Description:
1257 Get number of processors.
1258
1259 Arguments:
1260 None
1261
1262 Returns:
1263 Output regs
1264
1265 --*/
1266 ;
1267
1268 SAL_RETURN_REGS
1269 LibMpSaveMinStatePointer (
1270 IN UINT64 CpuGlobalId,
1271 IN EFI_PHYSICAL_ADDRESS MinStatePointer
1272 )
1273 /*++
1274
1275 Routine Description:
1276 Register pointer to save min state.
1277
1278 Arguments:
1279 CpuGlobalId - CPU global ID
1280 MinStatePointer - Pointer to save min state
1281
1282 Returns:
1283 Output regs
1284
1285 --*/
1286 ;
1287
1288 SAL_RETURN_REGS
1289 LibMpRestoreMinStatePointer (
1290 IN UINT64 CpuGlobalId
1291 )
1292 /*++
1293
1294 Routine Description:
1295 Restore pointer to save min state.
1296
1297 Arguments:
1298 CpuGlobalId - CPU global ID
1299
1300 Returns:
1301 Output regs
1302
1303 --*/
1304 ;
1305
1306 //
1307 // MCA Class Functions
1308 //
1309 EFI_STATUS
1310 LibMcaGetStateInfo (
1311 IN UINT64 CpuId,
1312 OUT EFI_PHYSICAL_ADDRESS *StateBufferPointer,
1313 OUT UINT64 *RequiredStateBufferSize
1314 )
1315 /*++
1316
1317 Routine Description:
1318 MCA get state info.
1319
1320 Arguments:
1321 CpuId - CPU ID
1322 StateBufferPointer - Pointer of state buffer
1323 RequiredStateBufferSize - Size of required state buffer
1324
1325 Returns:
1326 Status code
1327
1328 --*/
1329 ;
1330
1331 EFI_STATUS
1332 LibMcaRegisterCpu (
1333 IN UINT64 CpuId,
1334 IN EFI_PHYSICAL_ADDRESS StateBufferAddress
1335 )
1336 /*++
1337
1338 Routine Description:
1339 MCA register CPU state info.
1340
1341 Arguments:
1342 CpuId - CPU ID
1343 StateBufferAddress - Pointer of state buffer
1344
1345 Returns:
1346 Status code
1347
1348 --*/
1349 ;
1350
1351 //
1352 // SAL ELOG Functions
1353 //
1354 EFI_STATUS
1355 LibSalGetStateInfo (
1356 IN UINT64 McaType,
1357 IN UINT8 *McaBuffer,
1358 OUT UINTN *Size
1359 )
1360 /*++
1361
1362 Routine Description:
1363 Get state info.
1364
1365 Arguments:
1366 McaType - MCA type
1367 McaBuffer - Info buffer provided by caller
1368 Size - Size of info
1369
1370 Returns:
1371 Status code
1372
1373 --*/
1374 ;
1375
1376 EFI_STATUS
1377 LibSalGetStateInfoSize (
1378 IN UINT64 McaType,
1379 OUT UINTN *Size
1380 )
1381 /*++
1382
1383 Routine Description:
1384 Get state info size.
1385
1386 Arguments:
1387 McaType - MCA type
1388 Size - Size required
1389
1390 Returns:
1391 Status code
1392
1393 --*/
1394 ;
1395
1396 EFI_STATUS
1397 LibSalClearStateInfo (
1398 IN UINT64 McaType
1399 )
1400 /*++
1401
1402 Routine Description:
1403 Clear state info.
1404
1405 Arguments:
1406 McaType - MCA type
1407
1408 Returns:
1409 Status code
1410
1411 --*/
1412 ;
1413
1414 EFI_STATUS
1415 LibEsalGetStateBuffer (
1416 IN UINT64 McaType,
1417 OUT UINT8 **McaBuffer,
1418 OUT UINTN *Index
1419 )
1420 /*++
1421
1422 Routine Description:
1423 Get state buffer.
1424
1425 Arguments:
1426 McaType - MCA type
1427 McaBuffer - MCA buffer
1428 Index - CPU index
1429
1430 Returns:
1431 Status code
1432
1433 --*/
1434 ;
1435
1436 EFI_STATUS
1437 LibEsalSaveStateBuffer (
1438 IN UINT64 McaType
1439 )
1440 /*++
1441
1442 Routine Description:
1443 Save state buffer.
1444
1445 Arguments:
1446 McaType - MCA type
1447
1448 Returns:
1449 Status code
1450
1451 --*/
1452 ;
1453
1454 #endif