Commit | Line | Data |
---|---|---|
14457459 JW |
1 | /* |
2 | * Copyright (c) 2015, Linaro Limited | |
3 | * | |
4 | * This program is free software; you can redistribute it and/or modify | |
5 | * it under the terms of the GNU General Public License Version 2 as | |
6 | * published by the Free Software Foundation. | |
7 | * | |
8 | * This program is distributed in the hope that it will be useful, | |
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
11 | * GNU General Public License for more details. | |
12 | * | |
13 | */ | |
14 | #include <linux/linkage.h> | |
15 | #include <asm/asm-offsets.h> | |
16 | ||
17 | .macro SMCCC instr | |
18 | .cfi_startproc | |
19 | \instr #0 | |
20 | ldr x4, [sp] | |
21 | stp x0, x1, [x4, #ARM_SMCCC_RES_X0_OFFS] | |
22 | stp x2, x3, [x4, #ARM_SMCCC_RES_X2_OFFS] | |
23 | ret | |
24 | .cfi_endproc | |
25 | .endm | |
26 | ||
27 | /* | |
28 | * void arm_smccc_smc(unsigned long a0, unsigned long a1, unsigned long a2, | |
29 | * unsigned long a3, unsigned long a4, unsigned long a5, | |
30 | * unsigned long a6, unsigned long a7, struct arm_smccc_res *res) | |
31 | */ | |
32 | ENTRY(arm_smccc_smc) | |
33 | SMCCC smc | |
34 | ENDPROC(arm_smccc_smc) | |
35 | ||
36 | /* | |
37 | * void arm_smccc_hvc(unsigned long a0, unsigned long a1, unsigned long a2, | |
38 | * unsigned long a3, unsigned long a4, unsigned long a5, | |
39 | * unsigned long a6, unsigned long a7, struct arm_smccc_res *res) | |
40 | */ | |
41 | ENTRY(arm_smccc_hvc) | |
42 | SMCCC hvc | |
43 | ENDPROC(arm_smccc_hvc) |