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