]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blame - arch/arm64/kernel/smccc-call.S
arm: kernel: Add SMC structure parameter
[mirror_ubuntu-zesty-kernel.git] / arch / arm64 / kernel / smccc-call.S
CommitLineData
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,
8d54e740
AG
30 * unsigned long a6, unsigned long a7, struct arm_smccc_res *res,
31 * struct arm_smccc_quirk *quirk)
14457459 32 */
8d54e740 33ENTRY(__arm_smccc_smc)
14457459 34 SMCCC smc
8d54e740 35ENDPROC(__arm_smccc_smc)
14457459
JW
36
37/*
38 * void arm_smccc_hvc(unsigned long a0, unsigned long a1, unsigned long a2,
39 * unsigned long a3, unsigned long a4, unsigned long a5,
8d54e740
AG
40 * unsigned long a6, unsigned long a7, struct arm_smccc_res *res,
41 * struct arm_smccc_quirk *quirk)
14457459 42 */
8d54e740 43ENTRY(__arm_smccc_hvc)
14457459 44 SMCCC hvc
8d54e740 45ENDPROC(__arm_smccc_hvc)