ARM: 8480/2: arm64: add implementation for arm-smccc
[deliverable/linux.git] / arch / arm64 / kernel / smccc-call.S
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)
This page took 0.069036 seconds and 5 git commands to generate.