2 This library implements the SAL Library Class using Extended SAL functions
4 Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php.
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17 #include <Protocol/ExtendedSalServiceClasses.h>
19 #include <Library/SalLib.h>
20 #include <Library/ExtendedSalLib.h>
23 Makes a SAL procedure call.
25 This is a wrapper function to make a SAL procedure call.
26 No parameter checking is performed on the 8 input parameters,
27 but there are some common rules that the caller should follow
28 when making a SAL call. Any address passed to SAL as buffers
29 for return parameters must be 8-byte aligned. Unaligned
30 addresses may cause undefined results. For those parameters
31 defined as reserved or some fields defined as reserved must be
32 zero filled or the invalid argument return value may be returned
33 or undefined result may occur during the execution of the procedure.
34 This function is only available on IPF.
36 @param Index The SAL procedure Index number
37 @param Arg2 The 2nd parameter for SAL procedure calls
38 @param Arg3 The 3rd parameter for SAL procedure calls
39 @param Arg4 The 4th parameter for SAL procedure calls
40 @param Arg5 The 5th parameter for SAL procedure calls
41 @param Arg6 The 6th parameter for SAL procedure calls
42 @param Arg7 The 7th parameter for SAL procedure calls
43 @param Arg8 The 8th parameter for SAL procedure calls
45 @return SAL returned registers.
64 // Initial all members in this structure.
69 Regs
.Status
= EFI_SAL_INVALID_ARGUMENT
;
72 case EFI_SAL_SET_VECTORS
:
74 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_LO
,
75 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_HI
,
76 SalSetVectorsFunctionId
,
87 case EFI_SAL_GET_STATE_INFO
:
89 EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID_LO
,
90 EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID_HI
,
91 SalGetStateInfoFunctionId
,
102 case EFI_SAL_GET_STATE_INFO_SIZE
:
104 EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID_LO
,
105 EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID_HI
,
106 SalGetStateInfoSizeFunctionId
,
117 case EFI_SAL_CLEAR_STATE_INFO
:
119 EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID_LO
,
120 EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID_HI
,
121 SalClearStateInfoFunctionId
,
132 case EFI_SAL_MC_RENDEZ
:
134 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_LO
,
135 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_HI
,
136 SalMcRendezFunctionId
,
147 case EFI_SAL_MC_SET_PARAMS
:
149 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_LO
,
150 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_HI
,
151 SalMcSetParamsFunctionId
,
162 case EFI_SAL_REGISTER_PHYSICAL_ADDR
:
164 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_LO
,
165 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_HI
,
166 EsalRegisterPhysicalAddrFunctionId
,
177 case EFI_SAL_CACHE_FLUSH
:
179 EFI_EXTENDED_SAL_CACHE_SERVICES_PROTOCOL_GUID_LO
,
180 EFI_EXTENDED_SAL_CACHE_SERVICES_PROTOCOL_GUID_HI
,
181 SalCacheFlushFunctionId
,
192 case EFI_SAL_CACHE_INIT
:
194 EFI_EXTENDED_SAL_CACHE_SERVICES_PROTOCOL_GUID_LO
,
195 EFI_EXTENDED_SAL_CACHE_SERVICES_PROTOCOL_GUID_HI
,
196 SalCacheInitFunctionId
,
207 case EFI_SAL_PCI_CONFIG_READ
:
209 EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID_LO
,
210 EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID_HI
,
211 SalPciConfigReadFunctionId
,
222 case EFI_SAL_PCI_CONFIG_WRITE
:
224 EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID_LO
,
225 EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID_HI
,
226 SalPciConfigWriteFunctionId
,
237 case EFI_SAL_FREQ_BASE
:
239 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_LO
,
240 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_HI
,
241 EsalGetPlatformBaseFreqFunctionId
,
252 case EFI_SAL_PHYSICAL_ID_INFO
:
254 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_LO
,
255 EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_HI
,
256 EsalPhysicalIdInfoFunctionId
,
267 case EFI_SAL_UPDATE_PAL
:
269 EFI_EXTENDED_SAL_PAL_SERVICES_PROTOCOL_GUID_LO
,
270 EFI_EXTENDED_SAL_PAL_SERVICES_PROTOCOL_GUID_HI
,
271 EsalUpdatePalFunctionId
,