]> git.proxmox.com Git - mirror_edk2.git/blob - ArmPkg/Include/Library/ArmSmcLib.h
f5b45f0a8cdf792846b5d5db6eada697b6c8860d
[mirror_edk2.git] / ArmPkg / Include / Library / ArmSmcLib.h
1 /** @file
2 *
3 * Copyright (c) 2012-2014, ARM Limited. All rights reserved.
4 *
5 * SPDX-License-Identifier: BSD-2-Clause-Patent
6 *
7 **/
8
9 #ifndef ARM_SMC_LIB_H_
10 #define ARM_SMC_LIB_H_
11
12 /**
13 * The size of the SMC arguments are different between AArch64 and AArch32.
14 * The native size is used for the arguments.
15 */
16 typedef struct {
17 UINTN Arg0;
18 UINTN Arg1;
19 UINTN Arg2;
20 UINTN Arg3;
21 UINTN Arg4;
22 UINTN Arg5;
23 UINTN Arg6;
24 UINTN Arg7;
25 } ARM_SMC_ARGS;
26
27 /**
28 Trigger an SMC call
29
30 SMC calls can take up to 7 arguments and return up to 4 return values.
31 Therefore, the 4 first fields in the ARM_SMC_ARGS structure are used
32 for both input and output values.
33
34 **/
35 VOID
36 ArmCallSmc (
37 IN OUT ARM_SMC_ARGS *Args
38 );
39
40 #endif // ARM_SMC_LIB_H_