1*cddb18bcSAlexandru Elisei /* SPDX-License-Identifier: GPL-2.0 */ 2*cddb18bcSAlexandru Elisei /* 3*cddb18bcSAlexandru Elisei * Copyright (C) 2022 Arm Limited. 4*cddb18bcSAlexandru Elisei * All rights reserved. 5*cddb18bcSAlexandru Elisei */ 6*cddb18bcSAlexandru Elisei #ifndef _ASMARM_ARM_SMCCC_H_ 7*cddb18bcSAlexandru Elisei #define _ASMARM_ARM_SMCCC_H_ 8*cddb18bcSAlexandru Elisei 9*cddb18bcSAlexandru Elisei struct smccc_result { 10*cddb18bcSAlexandru Elisei unsigned long r0; 11*cddb18bcSAlexandru Elisei unsigned long r1; 12*cddb18bcSAlexandru Elisei unsigned long r2; 13*cddb18bcSAlexandru Elisei unsigned long r3; 14*cddb18bcSAlexandru Elisei unsigned long r4; 15*cddb18bcSAlexandru Elisei unsigned long r5; 16*cddb18bcSAlexandru Elisei unsigned long r6; 17*cddb18bcSAlexandru Elisei unsigned long r7; 18*cddb18bcSAlexandru Elisei unsigned long r8; 19*cddb18bcSAlexandru Elisei unsigned long r9; 20*cddb18bcSAlexandru Elisei }; 21*cddb18bcSAlexandru Elisei 22*cddb18bcSAlexandru Elisei typedef int (*smccc_invoke_fn)(unsigned int function_id, unsigned long arg0, 23*cddb18bcSAlexandru Elisei unsigned long arg1, unsigned long arg2, 24*cddb18bcSAlexandru Elisei unsigned long arg3, unsigned long arg4, 25*cddb18bcSAlexandru Elisei unsigned long arg5, unsigned long arg6, 26*cddb18bcSAlexandru Elisei unsigned long arg7, unsigned long arg8, 27*cddb18bcSAlexandru Elisei unsigned long arg9, unsigned long arg10, 28*cddb18bcSAlexandru Elisei struct smccc_result *result); 29*cddb18bcSAlexandru Elisei extern int arm_smccc_hvc(unsigned int function_id, unsigned long arg0, 30*cddb18bcSAlexandru Elisei unsigned long arg1, unsigned long arg2, 31*cddb18bcSAlexandru Elisei unsigned long arg3, unsigned long arg4, 32*cddb18bcSAlexandru Elisei unsigned long arg5, unsigned long arg6, 33*cddb18bcSAlexandru Elisei unsigned long arg7, unsigned long arg8, 34*cddb18bcSAlexandru Elisei unsigned long arg9, unsigned long arg10, 35*cddb18bcSAlexandru Elisei struct smccc_result *result); 36*cddb18bcSAlexandru Elisei extern int arm_smccc_smc(unsigned int function_id, unsigned long arg0, 37*cddb18bcSAlexandru Elisei unsigned long arg1, unsigned long arg2, 38*cddb18bcSAlexandru Elisei unsigned long arg3, unsigned long arg4, 39*cddb18bcSAlexandru Elisei unsigned long arg5, unsigned long arg6, 40*cddb18bcSAlexandru Elisei unsigned long arg7, unsigned long arg8, 41*cddb18bcSAlexandru Elisei unsigned long arg9, unsigned long arg10, 42*cddb18bcSAlexandru Elisei struct smccc_result *result); 43*cddb18bcSAlexandru Elisei 44*cddb18bcSAlexandru Elisei #endif /* _ASMARM_ARM_SMCCC_H_ */ 45