Add functions ArmCallSmc0/1/2/3 to do SMC calls with 0, 1, 2 or 3 arguments. The functions return up to 3 values. Signed-off-by: Rebecca Cran <rebecca@nuviainc.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
		
			
				
	
	
		
			102 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
//
 | 
						|
//  Copyright (c) 2021, NUVIA Inc. All rights reserved.
 | 
						|
//  Copyright (c) 2016, Linaro Limited. All rights reserved.
 | 
						|
//
 | 
						|
//  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
//
 | 
						|
//
 | 
						|
 | 
						|
#include <Base.h>
 | 
						|
#include <Library/ArmSmcLib.h>
 | 
						|
#include <IndustryStandard/ArmStdSmc.h>
 | 
						|
 | 
						|
VOID
 | 
						|
ArmCallSmc (
 | 
						|
  IN OUT ARM_SMC_ARGS  *Args
 | 
						|
  )
 | 
						|
{
 | 
						|
}
 | 
						|
 | 
						|
/** Triggers an SMC call with 3 arguments.
 | 
						|
 | 
						|
  @param Function The SMC function.
 | 
						|
  @param Arg1      Argument/result.
 | 
						|
  @param Arg2      Argument/result.
 | 
						|
  @param Arg3      Argument/result.
 | 
						|
 | 
						|
  @return The SMC error code.
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
ArmCallSmc3 (
 | 
						|
  IN     UINTN  Function,
 | 
						|
  IN OUT UINTN  *Arg1 OPTIONAL,
 | 
						|
  IN OUT UINTN  *Arg2 OPTIONAL,
 | 
						|
  IN OUT UINTN  *Arg3 OPTIONAL
 | 
						|
  )
 | 
						|
{
 | 
						|
  return SMC_ARCH_CALL_NOT_SUPPORTED;
 | 
						|
}
 | 
						|
 | 
						|
/** Trigger an SMC call with 2 arguments.
 | 
						|
 | 
						|
  @param Function The SMC function.
 | 
						|
  @param Arg1      Argument/result.
 | 
						|
  @param Arg2      Argument/result.
 | 
						|
  @param Arg3      Result.
 | 
						|
 | 
						|
  @return The SMC error code.
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
ArmCallSmc2 (
 | 
						|
  IN     UINTN  Function,
 | 
						|
  IN OUT UINTN  *Arg1 OPTIONAL,
 | 
						|
  IN OUT UINTN  *Arg2 OPTIONAL,
 | 
						|
  OUT UINTN     *Arg3 OPTIONAL
 | 
						|
  )
 | 
						|
{
 | 
						|
  return SMC_ARCH_CALL_NOT_SUPPORTED;
 | 
						|
}
 | 
						|
 | 
						|
/** Trigger an SMC call with 1 argument.
 | 
						|
 | 
						|
  @param Function The SMC function.
 | 
						|
  @param Arg1      Argument/result.
 | 
						|
  @param Arg2      Result.
 | 
						|
  @param Arg3      Result.
 | 
						|
 | 
						|
  @return The SMC error code.
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
ArmCallSmc1 (
 | 
						|
  IN     UINTN  Function,
 | 
						|
  IN OUT UINTN  *Arg1 OPTIONAL,
 | 
						|
  OUT UINTN     *Arg2 OPTIONAL,
 | 
						|
  OUT UINTN     *Arg3 OPTIONAL
 | 
						|
  )
 | 
						|
{
 | 
						|
  return SMC_ARCH_CALL_NOT_SUPPORTED;
 | 
						|
}
 | 
						|
 | 
						|
/** Trigger an SMC call with 0 arguments.
 | 
						|
 | 
						|
  @param Function The SMC function.
 | 
						|
  @param Arg1     Result.
 | 
						|
  @param Arg2     Result.
 | 
						|
  @param Arg3     Result.
 | 
						|
 | 
						|
  @return The SMC error code.
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
ArmCallSmc0 (
 | 
						|
  IN  UINTN  Function,
 | 
						|
  OUT UINTN  *Arg1 OPTIONAL,
 | 
						|
  OUT UINTN  *Arg2 OPTIONAL,
 | 
						|
  OUT UINTN  *Arg3 OPTIONAL
 | 
						|
  )
 | 
						|
{
 | 
						|
  return SMC_ARCH_CALL_NOT_SUPPORTED;
 | 
						|
}
 |