mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-11-04 01:03:23 +00:00 
			
		
		
		
	git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2687 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			440 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			440 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*++
 | 
						||
 | 
						||
Copyright (c) 2007, Intel Corporation                                                         
 | 
						||
All rights reserved. This program and the accompanying materials                          
 | 
						||
are licensed and made available under the terms and conditions of the BSD License         
 | 
						||
which accompanies this distribution.  The full text of the license may be found at        
 | 
						||
http://opensource.org/licenses/bsd-license.php                                            
 | 
						||
                                                                                          
 | 
						||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
 | 
						||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             
 | 
						||
 | 
						||
Module Name:
 | 
						||
 | 
						||
  ExtendedSalLib.h
 | 
						||
 | 
						||
Abstract:
 | 
						||
 | 
						||
--*/
 | 
						||
 | 
						||
#ifndef _EXTENDED_SAL_LIB_H__
 | 
						||
#define _EXTENDED_SAL_LIB_H__
 | 
						||
 | 
						||
/**
 | 
						||
  Register ESAL Class and it's asociated global.
 | 
						||
  
 | 
						||
  This function Registers one or more Extended SAL services in a given
 | 
						||
  class along with the associated global context.
 | 
						||
  This function is only available prior to ExitBootServices().
 | 
						||
 | 
						||
  @param  ClassGuid            GUID of function class
 | 
						||
  @param  ModuleGlobal         Module global for Function.
 | 
						||
  
 | 
						||
  @retval EFI_SUCCESS          The Extended SAL services were registered.
 | 
						||
  @retval EFI_UNSUPPORTED      This function was called after ExitBootServices().
 | 
						||
  @retval EFI_OUT_OF_RESOURCES There are not enough resources available to register one or more of the specified services.
 | 
						||
  @retval Other                ClassGuid could not be installed onto a new handle.  
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
RegisterEsalClass (
 | 
						||
  IN  CONST EFI_GUID  *ClassGuid,
 | 
						||
  IN  VOID            *ModuleGlobal,  OPTIONAL
 | 
						||
  ...
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Calls an Extended SAL Class service that was previously registered with RegisterEsalClass().
 | 
						||
  
 | 
						||
  This function calls an Extended SAL Class service that was previously registered with RegisterEsalClass().
 | 
						||
 | 
						||
  @param  ClassGuid      GUID of function
 | 
						||
  @param  FunctionId     Function in ClassGuid to call
 | 
						||
  @param  Arg2           Argument 2 ClassGuid/FunctionId defined
 | 
						||
  @param  Arg3           Argument 3 ClassGuid/FunctionId defined
 | 
						||
  @param  Arg4           Argument 4 ClassGuid/FunctionId defined
 | 
						||
  @param  Arg5           Argument 5 ClassGuid/FunctionId defined
 | 
						||
  @param  Arg6           Argument 6 ClassGuid/FunctionId defined
 | 
						||
  @param  Arg7           Argument 7 ClassGuid/FunctionId defined
 | 
						||
  @param  Arg8           Argument 8 ClassGuid/FunctionId defined
 | 
						||
  
 | 
						||
  @retval EFI_SAL_ERROR  The address of ExtendedSalProc() can not be determined
 | 
						||
                         for the current CPU execution mode.
 | 
						||
  @retval Other          See the return status from ExtendedSalProc() in the
 | 
						||
                         EXTENDED_SAL_BOOT_SERVICE_PROTOCOL.  
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalCall (
 | 
						||
  IN  EFI_GUID  *ClassGuid,
 | 
						||
  IN  UINT64    FunctionId,
 | 
						||
  IN  UINT64    Arg2,
 | 
						||
  IN  UINT64    Arg3,
 | 
						||
  IN  UINT64    Arg4,
 | 
						||
  IN  UINT64    Arg5,
 | 
						||
  IN  UINT64    Arg6,
 | 
						||
  IN  UINT64    Arg7,
 | 
						||
  IN  UINT64    Arg8
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalStallFunctionId service in the Extended SAL Stall Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalStallFunctionId service in the Extended SAL
 | 
						||
  Stall Services Class. See EsalStallFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  Microseconds         The number of microseconds to delay.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalStall (
 | 
						||
  IN UINTN  Microseconds
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalSetNewPalEntryFunctionId service in the Extended SAL PAL Services Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalSetNewPalEntryFunctionId service in the Extended SAL
 | 
						||
  PAL Services Services Class. See EsalSetNewPalEntryFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  PhyicalAddress         If TRUE, then PalEntryPoint is a physical address.
 | 
						||
                                 If FALSE, then PalEntryPoint is a virtual address.
 | 
						||
  @param  PalEntryPoint          The PAL Entry Point being set.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalSetNewPalEntry (
 | 
						||
  IN BOOLEAN  PhysicalAddress,
 | 
						||
  IN UINT64   PalEntryPoint
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalGetStateBufferFunctionId service in the Extended SAL PAL Services Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalGetStateBufferFunctionId service in the Extended SAL
 | 
						||
  PAL Services Services Class. See EsalGetStateBufferFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  PhyicalAddress         If TRUE, then PalEntryPoint is a physical address.
 | 
						||
                                 If FALSE, then PalEntryPoint is a virtual address.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalGetNewPalEntry (
 | 
						||
  IN BOOLEAN  PhysicalAddress
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalGetStateBufferFunctionId  service in the Extended SAL MCA Log Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalGetStateBufferFunctionId service in the Extended SAL
 | 
						||
  MCA Log Services Class. See EsalGetStateBufferFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  McaType         See type parameter in the SAL Procedure SAL_GET_STATE_INFO.
 | 
						||
  @param  McaBuffer       A pointer to the base address of the returned buffer. Copied from SAL_RETURN_REGS.r9.
 | 
						||
  @param  BufferSize      A pointer to the size, in bytes, of the returned buffer.  Copied from SAL_RETURN_REGS.r10.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalGetStateBufferLeon (
 | 
						||
  IN  UINT64  McaType,
 | 
						||
  OUT UINT8   **McaBuffer,
 | 
						||
  OUT UINTN   *BufferSize
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalSaveStateBufferFunctionId service in the Extended SAL MCA Log Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalSaveStateBufferFunctionId service in the Extended SAL
 | 
						||
  MCA Log Services Class. See EsalSaveStateBufferFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  McaType         See type parameter in the SAL Procedure SAL_GET_STATE_INFO.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalSaveStateBufferLeon (
 | 
						||
  IN  UINT64  McaType
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalGetVectorsFunctionId service in the Extended SAL MCA Log Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalGetVectorsFunctionId service in the Extended SAL
 | 
						||
  MCA Log Services Class. See EsalGetVectorsFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  VectorType         The vector type to retrieve.
 | 
						||
                             0 <20>C MCA, 1 - BSP INIT, 2 <20>C BOOT_RENDEZ, 3 <20>C AP INIT.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalGetVectorsLeon (
 | 
						||
  IN  UINT64  VectorType
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalMcGetParamsFunctionId service in the Extended SAL MCA Log Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalMcGetParamsFunctionId service in the Extended SAL
 | 
						||
  MCA Log Services Class. See EsalMcGetParamsFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  ParamInfoType         The parameter type to retrieve.
 | 
						||
                                1 <20>C rendezvous interrupt
 | 
						||
                                2 <20>C wake up
 | 
						||
                                3 <20>C Corrected Platform Error Vector.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalMcGetParamsLeon (
 | 
						||
  IN  UINT64  ParamInfoType
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalMcGetParamsFunctionId service in the Extended SAL MCA Log Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalMcGetParamsFunctionId service in the Extended SAL
 | 
						||
  MCA Log Services Class. See EsalMcGetParamsFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalMcGetMcParamsLeon (
 | 
						||
  VOID
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalGetMcCheckinFlagsFunctionId service in the Extended SAL MCA Log Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalGetMcCheckinFlagsFunctionId service in the Extended SAL
 | 
						||
  MCA Log Services Class. See EsalGetMcCheckinFlagsFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  CpuIndex         The index of the CPU in the set of enabled CPUs to check.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalGetMcCheckinFlagsLeon (
 | 
						||
  IN  UINT64  CpuIndex
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalAddCpuDataFunctionId service in the Extended SAL MCA Log Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalAddCpuDataFunctionId service in the Extended SAL
 | 
						||
  MCA Log Services Class. See EsalAddCpuDataFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  CpuGlobalId         The Global ID for the CPU being added.
 | 
						||
  @param  Enabled             The enable flag for the CPU being added.
 | 
						||
                              TRUE means the CPU is enabled.
 | 
						||
                              FALSE means the CPU is disabled.
 | 
						||
  @param  PalCompatibility    The PAL Compatibility value for the CPU being added.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalAddCpuData (
 | 
						||
  IN UINT64   CpuGlobalId,
 | 
						||
  IN BOOLEAN  Enabled,
 | 
						||
  IN UINT64   PalCompatibility
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalRemoveCpuDataFunctionId service in the Extended SAL MCA Log Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalRemoveCpuDataFunctionId service in the Extended SAL
 | 
						||
  MCA Log Services Class. See EsalRemoveCpuDataFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  CpuGlobalId         The Global ID for the CPU being removed.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalRemoveCpuData (
 | 
						||
  IN UINT64  CpuGlobalId
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalModifyCpuDataFunctionId service in the Extended SAL MCA Log Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalModifyCpuDataFunctionId service in the Extended SAL
 | 
						||
  MCA Log Services Class. See EsalModifyCpuDataFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  CpuGlobalId         The Global ID for the CPU being modified.
 | 
						||
  @param  Enabled             The enable flag for the CPU being modified.
 | 
						||
                              TRUE means the CPU is enabled.
 | 
						||
                              FALSE means the CPU is disabled.
 | 
						||
  @param  PalCompatibility    The PAL Compatibility value for the CPU being modified.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalModifyCpuData (
 | 
						||
  IN UINT64   CpuGlobalId,
 | 
						||
  IN BOOLEAN  Enabled,
 | 
						||
  IN UINT64   PalCompatibility
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalGetCpuDataByIdFunctionId service in the Extended SAL MCA Log Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalGetCpuDataByIdFunctionId service in the Extended SAL
 | 
						||
  MCA Log Services Class. See EsalGetCpuDataByIdFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  CpuGlobalId         The Global ID for the CPU being looked up.
 | 
						||
  @param  IndexByEnabledCpu   If TRUE, then the index in the set of enabled CPUs in the database is returned.
 | 
						||
                              If FALSE, then the index in the set of all CPUs in the database is returned.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalGetCpuDataById (
 | 
						||
  IN UINT64   CpuGlobalId,
 | 
						||
  IN BOOLEAN  IndexByEnabledCpu
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalGetCpuDataByIndexFunctionId service in the Extended SAL MCA Log Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalGetCpuDataByIndexFunctionId service in the Extended SAL
 | 
						||
  MCA Log Services Class. See EsalGetCpuDataByIndexFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  Index               The Global ID for the CPU being modified.
 | 
						||
  @param  IndexByEnabledCpu   If TRUE, then the index in the set of enabled CPUs in the database is returned.
 | 
						||
                              If FALSE, then the index in the set of all CPUs in the database is returned.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalGetCpuDataByIndex (
 | 
						||
  IN UINT64   Index,
 | 
						||
  IN BOOLEAN  IndexByEnabledCpu
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalWhoAmIFunctionId service in the Extended SAL MCA Log Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalWhoAmIFunctionId service in the Extended SAL
 | 
						||
  MCA Log Services Class. See EsalWhoAmIFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  IndexByEnabledCpu   If TRUE, then the index in the set of enabled CPUs in the database is returned.
 | 
						||
                              If FALSE, then the index in the set of all CPUs in the database is returned.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalWhoAmI (
 | 
						||
  IN BOOLEAN  IndexByEnabledCpu
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalNumProcessors service in the Extended SAL MCA Log Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalNumProcessors service in the Extended SAL
 | 
						||
  MCA Log Services Class. See EsalNumProcessors in the Extended SAL Specification.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalNumProcessors (
 | 
						||
  VOID
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalSetMinStateFnctionId service in the Extended SAL MCA Log Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalSetMinStateFnctionId service in the Extended SAL
 | 
						||
  MCA Log Services Class. See EsalSetMinStateFnctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  CpuGlobalId       The Global ID for the CPU whose MINSTATE pointer is being set.
 | 
						||
  @param  MinStatePointer   The physical address of the MINSTATE buffer for the CPU specified by CpuGlobalId.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalSetMinState (
 | 
						||
  IN UINT64                CpuGlobalId,
 | 
						||
  IN EFI_PHYSICAL_ADDRESS  MinStatePointer
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalGetMinStateFunctionId service in the Extended SAL MCA Log Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalGetMinStateFunctionId service in the Extended SAL
 | 
						||
  MCA Log Services Class. See EsalGetMinStateFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  CpuGlobalId   The Global ID for the CPU whose MINSTATE pointer is being retrieved.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalGetMinState (
 | 
						||
  IN UINT64  CpuGlobalId
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalMcsGetStateInfoFunctionId service in the Extended SAL MCA Log Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalMcsGetStateInfoFunctionId service in the Extended SAL
 | 
						||
  MCA Log Services Class. See EsalMcsGetStateInfoFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  CpuGlobalId               The Global ID for the CPU whose MCA state buffer is being retrieved.
 | 
						||
  @param  StateBufferPointer        A pointer to the returned MCA state buffer.
 | 
						||
  @param  RequiredStateBufferSize   A pointer to the size, in bytes, of the returned MCA state buffer.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalMcaGetStateInfo (
 | 
						||
  IN  UINT64                CpuGlobalId,
 | 
						||
  OUT EFI_PHYSICAL_ADDRESS  *StateBufferPointer,
 | 
						||
  OUT UINT64                *RequiredStateBufferSize
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
/**
 | 
						||
  Wrapper for the EsalMcaRegisterCpuFunctionId service in the Extended SAL MCA Log Services Class.
 | 
						||
  
 | 
						||
  This function is a wrapper for the EsalMcaRegisterCpuFunctionId service in the Extended SAL
 | 
						||
  MCA Log Services Class. See EsalMcaRegisterCpuFunctionId in the Extended SAL Specification.
 | 
						||
 | 
						||
  @param  CpuGlobalId          The Global ID for the CPU whose MCA state buffer is being set.
 | 
						||
  @param  StateBufferPointer   A pointer to the MCA state buffer.
 | 
						||
 | 
						||
**/
 | 
						||
SAL_RETURN_REGS
 | 
						||
EFIAPI
 | 
						||
EsalMcaRegisterCpu (
 | 
						||
  IN UINT64                CpuGlobalId,
 | 
						||
  IN EFI_PHYSICAL_ADDRESS  StateBufferPointer
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
#endif
 |