From 4d163696f23dc552b30c2a21cc5e5b7d201c7946 Mon Sep 17 00:00:00 2001 From: Supreeth Venkatesh Date: Wed, 20 Sep 2017 20:48:13 +0100 Subject: ArmPkg/Include: Add ArmSvcLib header file. ArmSvcLib header file to specify the SVC arguments structure and function prototype to trigger an SVC call. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Achin Gupta Signed-off-by: Supreeth Venkatesh Reviewed-by: Ard Biesheuvel --- ArmPkg/Include/Library/ArmSvcLib.h | 46 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 ArmPkg/Include/Library/ArmSvcLib.h (limited to 'ArmPkg/Include') diff --git a/ArmPkg/Include/Library/ArmSvcLib.h b/ArmPkg/Include/Library/ArmSvcLib.h new file mode 100644 index 0000000..77a60b3 --- /dev/null +++ b/ArmPkg/Include/Library/ArmSvcLib.h @@ -0,0 +1,46 @@ +/** @file +* +* Copyright (c) 2016 - 2017, ARM Limited. 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. +* +**/ + +#ifndef __ARM_SVC_LIB__ +#define __ARM_SVC_LIB__ + +/** + * The size of the SVC arguments are different between AArch64 and AArch32. + * The native size is used for the arguments. + */ +typedef struct { + UINTN Arg0; + UINTN Arg1; + UINTN Arg2; + UINTN Arg3; + UINTN Arg4; + UINTN Arg5; + UINTN Arg6; + UINTN Arg7; +} ARM_SVC_ARGS; + +/** + Trigger an SVC call + + SVC calls can take up to 7 arguments and return up to 4 return values. + Therefore, the 4 first fields in the ARM_SVC_ARGS structure are used + for both input and output values. + +**/ +VOID +ArmCallSvc ( + IN OUT ARM_SVC_ARGS *Args + ); + +#endif -- cgit v1.1