]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Library/DxeSalLibEsal/DxeSalLibEsal.c
MdePkg: Clean up source files
[mirror_edk2.git] / MdePkg / Library / DxeSalLibEsal / DxeSalLibEsal.c
CommitLineData
863be5d0 1/** @file\r
2 This library implements the SAL Library Class using Extended SAL functions\r
3\r
9095d37b 4 Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
863be5d0 5 This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php.\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#include <PiDxe.h>\r
16\r
17#include <Protocol/ExtendedSalServiceClasses.h>\r
18\r
19#include <Library/SalLib.h>\r
20#include <Library/ExtendedSalLib.h>\r
21\r
22/**\r
23 Makes a SAL procedure call.\r
9095d37b
LG
24\r
25 This is a wrapper function to make a SAL procedure call.\r
863be5d0 26 No parameter checking is performed on the 8 input parameters,\r
27 but there are some common rules that the caller should follow\r
28 when making a SAL call. Any address passed to SAL as buffers\r
29 for return parameters must be 8-byte aligned. Unaligned\r
30 addresses may cause undefined results. For those parameters\r
31 defined as reserved or some fields defined as reserved must be\r
32 zero filled or the invalid argument return value may be returned\r
33 or undefined result may occur during the execution of the procedure.\r
34 This function is only available on IPF.\r
35\r
36 @param Index The SAL procedure Index number\r
37 @param Arg2 The 2nd parameter for SAL procedure calls\r
38 @param Arg3 The 3rd parameter for SAL procedure calls\r
39 @param Arg4 The 4th parameter for SAL procedure calls\r
40 @param Arg5 The 5th parameter for SAL procedure calls\r
41 @param Arg6 The 6th parameter for SAL procedure calls\r
42 @param Arg7 The 7th parameter for SAL procedure calls\r
43 @param Arg8 The 8th parameter for SAL procedure calls\r
44\r
45 @return SAL returned registers.\r
46\r
47**/\r
48SAL_RETURN_REGS\r
49EFIAPI\r
50SalCall (\r
51 IN UINT64 Index,\r
52 IN UINT64 Arg2,\r
53 IN UINT64 Arg3,\r
54 IN UINT64 Arg4,\r
55 IN UINT64 Arg5,\r
56 IN UINT64 Arg6,\r
57 IN UINT64 Arg7,\r
58 IN UINT64 Arg8\r
59 )\r
60{\r
61 SAL_RETURN_REGS Regs;\r
9095d37b 62\r
18ad26da
ED
63 //\r
64 // Initial all members in this structure.\r
65 //\r
66 Regs.r9 = 0;\r
67 Regs.r10 = 0;\r
68 Regs.r11 = 0;\r
69 Regs.Status = EFI_SAL_INVALID_ARGUMENT;\r
863be5d0 70\r
71 switch (Index) {\r
72 case EFI_SAL_SET_VECTORS:\r
73 return EsalCall (\r
74 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_LO,\r
75 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_HI,\r
9095d37b
LG
76 SalSetVectorsFunctionId,\r
77 Arg2,\r
78 Arg3,\r
79 Arg4,\r
80 Arg5,\r
81 Arg6,\r
82 Arg7,\r
863be5d0 83 Arg8\r
84 );\r
85 break;\r
86\r
87 case EFI_SAL_GET_STATE_INFO:\r
88 return EsalCall (\r
89 EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID_LO,\r
90 EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID_HI,\r
9095d37b
LG
91 SalGetStateInfoFunctionId,\r
92 Arg2,\r
93 Arg3,\r
94 Arg4,\r
95 Arg5,\r
96 Arg6,\r
97 Arg7,\r
863be5d0 98 Arg8\r
99 );\r
100 break;\r
101\r
102 case EFI_SAL_GET_STATE_INFO_SIZE:\r
103 return EsalCall (\r
104 EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID_LO,\r
105 EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID_HI,\r
9095d37b
LG
106 SalGetStateInfoSizeFunctionId,\r
107 Arg2,\r
108 Arg3,\r
109 Arg4,\r
110 Arg5,\r
111 Arg6,\r
112 Arg7,\r
863be5d0 113 Arg8\r
114 );\r
115 break;\r
116\r
117 case EFI_SAL_CLEAR_STATE_INFO:\r
118 return EsalCall (\r
119 EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID_LO,\r
120 EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID_HI,\r
9095d37b
LG
121 SalClearStateInfoFunctionId,\r
122 Arg2,\r
123 Arg3,\r
124 Arg4,\r
125 Arg5,\r
126 Arg6,\r
127 Arg7,\r
863be5d0 128 Arg8\r
129 );\r
130 break;\r
131\r
132 case EFI_SAL_MC_RENDEZ:\r
133 return EsalCall (\r
134 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_LO,\r
135 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_HI,\r
9095d37b
LG
136 SalMcRendezFunctionId,\r
137 Arg2,\r
138 Arg3,\r
139 Arg4,\r
140 Arg5,\r
141 Arg6,\r
142 Arg7,\r
863be5d0 143 Arg8\r
144 );\r
145 break;\r
146\r
147 case EFI_SAL_MC_SET_PARAMS:\r
148 return EsalCall (\r
149 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_LO,\r
150 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_HI,\r
9095d37b
LG
151 SalMcSetParamsFunctionId,\r
152 Arg2,\r
153 Arg3,\r
154 Arg4,\r
155 Arg5,\r
156 Arg6,\r
157 Arg7,\r
863be5d0 158 Arg8\r
159 );\r
160 break;\r
161\r
162 case EFI_SAL_REGISTER_PHYSICAL_ADDR:\r
163 return EsalCall (\r
164 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_LO,\r
165 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_HI,\r
9095d37b
LG
166 EsalRegisterPhysicalAddrFunctionId,\r
167 Arg2,\r
168 Arg3,\r
169 Arg4,\r
170 Arg5,\r
171 Arg6,\r
172 Arg7,\r
863be5d0 173 Arg8\r
174 );\r
175 break;\r
176\r
177 case EFI_SAL_CACHE_FLUSH:\r
178 return EsalCall (\r
179 EFI_EXTENDED_SAL_CACHE_SERVICES_PROTOCOL_GUID_LO,\r
180 EFI_EXTENDED_SAL_CACHE_SERVICES_PROTOCOL_GUID_HI,\r
9095d37b
LG
181 SalCacheFlushFunctionId,\r
182 Arg2,\r
183 Arg3,\r
184 Arg4,\r
185 Arg5,\r
186 Arg6,\r
187 Arg7,\r
863be5d0 188 Arg8\r
189 );\r
190 break;\r
191\r
192 case EFI_SAL_CACHE_INIT:\r
193 return EsalCall (\r
194 EFI_EXTENDED_SAL_CACHE_SERVICES_PROTOCOL_GUID_LO,\r
195 EFI_EXTENDED_SAL_CACHE_SERVICES_PROTOCOL_GUID_HI,\r
9095d37b
LG
196 SalCacheInitFunctionId,\r
197 Arg2,\r
198 Arg3,\r
199 Arg4,\r
200 Arg5,\r
201 Arg6,\r
202 Arg7,\r
863be5d0 203 Arg8\r
204 );\r
205 break;\r
206\r
207 case EFI_SAL_PCI_CONFIG_READ:\r
208 return EsalCall (\r
209 EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID_LO,\r
210 EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID_HI,\r
9095d37b
LG
211 SalPciConfigReadFunctionId,\r
212 Arg2,\r
213 Arg3,\r
214 Arg4,\r
215 Arg5,\r
216 Arg6,\r
217 Arg7,\r
863be5d0 218 Arg8\r
219 );\r
220 break;\r
221\r
222 case EFI_SAL_PCI_CONFIG_WRITE:\r
223 return EsalCall (\r
224 EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID_LO,\r
225 EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID_HI,\r
9095d37b
LG
226 SalPciConfigWriteFunctionId,\r
227 Arg2,\r
228 Arg3,\r
229 Arg4,\r
230 Arg5,\r
231 Arg6,\r
232 Arg7,\r
863be5d0 233 Arg8\r
234 );\r
235 break;\r
236\r
237 case EFI_SAL_FREQ_BASE:\r
238 return EsalCall (\r
239 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_LO,\r
240 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_HI,\r
9095d37b
LG
241 EsalGetPlatformBaseFreqFunctionId,\r
242 Arg2,\r
243 Arg3,\r
244 Arg4,\r
245 Arg5,\r
246 Arg6,\r
247 Arg7,\r
863be5d0 248 Arg8\r
249 );\r
250 break;\r
251\r
252 case EFI_SAL_PHYSICAL_ID_INFO:\r
253 return EsalCall (\r
254 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_LO,\r
255 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_HI,\r
9095d37b
LG
256 EsalPhysicalIdInfoFunctionId,\r
257 Arg2,\r
258 Arg3,\r
259 Arg4,\r
260 Arg5,\r
261 Arg6,\r
262 Arg7,\r
863be5d0 263 Arg8\r
264 );\r
265 break;\r
266\r
267 case EFI_SAL_UPDATE_PAL:\r
268 return EsalCall (\r
269 EFI_EXTENDED_SAL_PAL_SERVICES_PROTOCOL_GUID_LO,\r
270 EFI_EXTENDED_SAL_PAL_SERVICES_PROTOCOL_GUID_HI,\r
9095d37b
LG
271 EsalUpdatePalFunctionId,\r
272 Arg2,\r
273 Arg3,\r
274 Arg4,\r
275 Arg5,\r
276 Arg6,\r
277 Arg7,\r
863be5d0 278 Arg8\r
279 );\r
280 break;\r
281\r
282 default:\r
863be5d0 283 return Regs;\r
284 break;\r
285 }\r
286}\r