source: src/linux/universal/linux-4.9/arch/arm64/kernel/smccc-call.S @ 31859

Last change on this file since 31859 was 31859, checked in by brainslayer, 3 months ago

kernel update

File size: 1.5 KB
Line 
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 <linux/arm-smccc.h>
16#include <asm/asm-offsets.h>
17
18        .macro SMCCC instr
19        .cfi_startproc
20        \instr  #0
21        ldr     x4, [sp]
22        stp     x0, x1, [x4, #ARM_SMCCC_RES_X0_OFFS]
23        stp     x2, x3, [x4, #ARM_SMCCC_RES_X2_OFFS]
24        ldr     x4, [sp, #8]
25        cbz     x4, 1f /* no quirk structure */
26        ldr     x9, [x4, #ARM_SMCCC_QUIRK_ID_OFFS]
27        cmp     x9, #ARM_SMCCC_QUIRK_QCOM_A6
28        b.ne    1f
29        str     x6, [x4, ARM_SMCCC_QUIRK_STATE_OFFS]
301:      ret
31        .cfi_endproc
32        .endm
33
34/*
35 * void arm_smccc_smc(unsigned long a0, unsigned long a1, unsigned long a2,
36 *                unsigned long a3, unsigned long a4, unsigned long a5,
37 *                unsigned long a6, unsigned long a7, struct arm_smccc_res *res,
38 *                struct arm_smccc_quirk *quirk)
39 */
40ENTRY(__arm_smccc_smc)
41        SMCCC   smc
42ENDPROC(__arm_smccc_smc)
43
44/*
45 * void arm_smccc_hvc(unsigned long a0, unsigned long a1, unsigned long a2,
46 *                unsigned long a3, unsigned long a4, unsigned long a5,
47 *                unsigned long a6, unsigned long a7, struct arm_smccc_res *res,
48 *                struct arm_smccc_quirk *quirk)
49 */
50ENTRY(__arm_smccc_hvc)
51        SMCCC   hvc
52ENDPROC(__arm_smccc_hvc)
Note: See TracBrowser for help on using the repository browser.