xref: /aosp_15_r20/external/arm-trusted-firmware/include/services/gtsi_svc.h (revision 54fd6939e177f8ff529b10183254802c76df6d08)
1*54fd6939SJiyong Park /*
2*54fd6939SJiyong Park  * Copyright (c) 2021, Arm Limited. All rights reserved.
3*54fd6939SJiyong Park  *
4*54fd6939SJiyong Park  * SPDX-License-Identifier: BSD-3-Clause
5*54fd6939SJiyong Park  */
6*54fd6939SJiyong Park 
7*54fd6939SJiyong Park #ifndef GTSI_SVC_H
8*54fd6939SJiyong Park #define GTSI_SVC_H
9*54fd6939SJiyong Park 
10*54fd6939SJiyong Park /* GTSI error codes. */
11*54fd6939SJiyong Park #define GTSI_SUCCESS			0
12*54fd6939SJiyong Park #define GTSI_ERROR_NOT_SUPPORTED	-1
13*54fd6939SJiyong Park #define GTSI_ERROR_INVALID_ADDRESS	-2
14*54fd6939SJiyong Park #define GTSI_ERROR_INVALID_PAS		-3
15*54fd6939SJiyong Park 
16*54fd6939SJiyong Park /* The macros below are used to identify GTSI calls from the SMC function ID */
17*54fd6939SJiyong Park #define GTSI_FNUM_MIN_VALUE	U(0x100)
18*54fd6939SJiyong Park #define GTSI_FNUM_MAX_VALUE	U(0x101)
19*54fd6939SJiyong Park #define is_gtsi_fid(fid) __extension__ ({		\
20*54fd6939SJiyong Park 	__typeof__(fid) _fid = (fid);			\
21*54fd6939SJiyong Park 	((GET_SMC_NUM(_fid) >= GTSI_FNUM_MIN_VALUE) &&	\
22*54fd6939SJiyong Park 	 (GET_SMC_NUM(_fid) <= GTSI_FNUM_MAX_VALUE)); })
23*54fd6939SJiyong Park 
24*54fd6939SJiyong Park /* Get GTSI fastcall std FID from function number */
25*54fd6939SJiyong Park #define GTSI_FID(smc_cc, func_num)			\
26*54fd6939SJiyong Park 	((SMC_TYPE_FAST << FUNCID_TYPE_SHIFT)	|	\
27*54fd6939SJiyong Park 	 ((smc_cc) << FUNCID_CC_SHIFT)		|	\
28*54fd6939SJiyong Park 	 (OEN_STD_START << FUNCID_OEN_SHIFT)	|	\
29*54fd6939SJiyong Park 	 ((func_num) << FUNCID_NUM_SHIFT))
30*54fd6939SJiyong Park 
31*54fd6939SJiyong Park #define GRAN_TRANS_TO_REALM_FNUM	U(0x100)
32*54fd6939SJiyong Park #define GRAN_TRANS_TO_NS_FNUM		U(0x101)
33*54fd6939SJiyong Park 
34*54fd6939SJiyong Park #define SMC_ASC_MARK_REALM	GTSI_FID(SMC_64, GRAN_TRANS_TO_REALM_FNUM)
35*54fd6939SJiyong Park #define SMC_ASC_MARK_NONSECURE	GTSI_FID(SMC_64, GRAN_TRANS_TO_NS_FNUM)
36*54fd6939SJiyong Park 
37*54fd6939SJiyong Park #define GRAN_TRANS_RET_BAD_ADDR		-2
38*54fd6939SJiyong Park #define GRAN_TRANS_RET_BAD_PAS		-3
39*54fd6939SJiyong Park 
40*54fd6939SJiyong Park #endif /* GTSI_SVC_H */
41