1 // SPDX-License-Identifier: GPL-2.0+
4 * Michalis Pappas <mpappas@fastmail.fm>
9 #include <linux/arm-smccc.h>
10 #include <linux/compiler.h>
11 #include <linux/psci.h>
13 static int do_call(struct cmd_tbl
*cmdtp
, int flag
, int argc
,
16 struct arm_smccc_res res
;
31 fid
= hextoul(argv
[1], NULL
);
33 a1
= argc
> 2 ? hextoul(argv
[2], NULL
) : 0;
34 a2
= argc
> 3 ? hextoul(argv
[3], NULL
) : 0;
35 a3
= argc
> 4 ? hextoul(argv
[4], NULL
) : 0;
36 a4
= argc
> 5 ? hextoul(argv
[5], NULL
) : 0;
37 a5
= argc
> 6 ? hextoul(argv
[6], NULL
) : 0;
38 a6
= argc
> 7 ? hextoul(argv
[7], NULL
) : 0;
39 a7
= argc
> 8 ? hextoul(argv
[8], NULL
) : 0;
41 if (!strcmp(argv
[0], "smc"))
42 arm_smccc_smc(fid
, a1
, a2
, a3
, a4
, a5
, a6
, a7
, &res
);
44 arm_smccc_hvc(fid
, a1
, a2
, a3
, a4
, a5
, a6
, a7
, &res
);
46 printf("Res: 0x%lx 0x%lx 0x%lx 0x%lx\n", res
.a0
, res
.a1
, res
.a2
, res
.a3
);
54 "Issue a Secure Monitor Call",
55 "<fid> [arg1 ... arg6] [id]\n"
56 " - fid Function ID\n"
57 " - arg SMC arguments, passed to X1-X6 (default to zero)\n"
58 " - id Secure OS ID / Session ID, passed to W7 (defaults to zero)\n"
65 "Issue a Hypervisor Call",
66 "<fid> [arg1...arg6] [id]\n"
67 " - fid Function ID\n"
68 " - arg HVC arguments, passed to X1-X6 (default to zero)\n"
69 " - id Session ID, passed to W7 (defaults to zero)\n"