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