1e62748e3SManish V Badarkhe /* 2e62748e3SManish V Badarkhe * Copyright (c) 2022 Arm Limited. All rights reserved. 3e62748e3SManish V Badarkhe * 4e62748e3SManish V Badarkhe * SPDX-License-Identifier: BSD-3-Clause 5e62748e3SManish V Badarkhe * 6e62748e3SManish V Badarkhe * DRTM service 7e62748e3SManish V Badarkhe * 8e62748e3SManish V Badarkhe * Authors: 9e62748e3SManish V Badarkhe * Lucian Paul-Trifu <lucian.paultrifu@gmail.com> 10e62748e3SManish V Badarkhe * Brian Nezvadovitz <brinez@microsoft.com> 2021-02-01 11e62748e3SManish V Badarkhe * 12e62748e3SManish V Badarkhe */ 13e62748e3SManish V Badarkhe 14e62748e3SManish V Badarkhe #ifndef ARM_DRTM_SVC_H 15e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_H 16e62748e3SManish V Badarkhe 17e62748e3SManish V Badarkhe /* 18e62748e3SManish V Badarkhe * SMC function IDs for DRTM Service 19e62748e3SManish V Badarkhe * Upper word bits set: Fast call, SMC64, Standard Secure Svc. Call (OEN = 4) 20e62748e3SManish V Badarkhe */ 21e62748e3SManish V Badarkhe #define DRTM_FID(func_num) \ 22e62748e3SManish V Badarkhe ((SMC_TYPE_FAST << FUNCID_TYPE_SHIFT) | \ 23e62748e3SManish V Badarkhe (SMC_64 << FUNCID_CC_SHIFT) | \ 24e62748e3SManish V Badarkhe (OEN_STD_START << FUNCID_OEN_SHIFT) | \ 25e62748e3SManish V Badarkhe ((func_num) << FUNCID_NUM_SHIFT)) 26e62748e3SManish V Badarkhe 27e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_VERSION U(0x110) 28e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_FEATURES U(0x111) 29e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_UNPROTECT_MEM U(0x113) 30e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_DYNAMIC_LAUNCH U(0x114) 31e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_CLOSE_LOCALITY U(0x115) 32e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_GET_ERROR U(0x116) 33e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_SET_ERROR U(0x117) 34e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_SET_TCB_HASH U(0x118) 35e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_LOCK_TCB_HASH U(0x119) 36e62748e3SManish V Badarkhe 37e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_VERSION DRTM_FID(DRTM_FNUM_SVC_VERSION) 38e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_FEATURES DRTM_FID(DRTM_FNUM_SVC_FEATURES) 39e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_UNPROTECT_MEM DRTM_FID(DRTM_FNUM_SVC_UNPROTECT_MEM) 40e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_DYNAMIC_LAUNCH DRTM_FID(DRTM_FNUM_SVC_DYNAMIC_LAUNCH) 41e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_CLOSE_LOCALITY DRTM_FID(DRTM_FNUM_SVC_CLOSE_LOCALITY) 42e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_GET_ERROR DRTM_FID(DRTM_FNUM_SVC_GET_ERROR) 43e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_SET_ERROR DRTM_FID(DRTM_FNUM_SVC_SET_ERROR) 44e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_SET_TCB_HASH DRTM_FID(DRTM_FNUM_SVC_SET_TCB_HASH) 45e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_LOCK_TCB_HASH DRTM_FID(DRTM_FNUM_SVC_LOCK_TCB_HASH) 46e62748e3SManish V Badarkhe 47e62748e3SManish V Badarkhe #define is_drtm_fid(_fid) \ 48e62748e3SManish V Badarkhe (((_fid) >= ARM_DRTM_SVC_VERSION) && ((_fid) <= ARM_DRTM_SVC_LOCK_TCB_HASH)) 49e62748e3SManish V Badarkhe 50e62748e3SManish V Badarkhe /* ARM DRTM Service Calls version numbers */ 51e62748e3SManish V Badarkhe #define ARM_DRTM_VERSION_MAJOR U(0) 52e62748e3SManish V Badarkhe #define ARM_DRTM_VERSION_MAJOR_SHIFT 16 53e62748e3SManish V Badarkhe #define ARM_DRTM_VERSION_MAJOR_MASK U(0x7FFF) 54e62748e3SManish V Badarkhe #define ARM_DRTM_VERSION_MINOR U(1) 55e62748e3SManish V Badarkhe #define ARM_DRTM_VERSION_MINOR_SHIFT 0 56e62748e3SManish V Badarkhe #define ARM_DRTM_VERSION_MINOR_MASK U(0xFFFF) 57e62748e3SManish V Badarkhe 58e62748e3SManish V Badarkhe #define ARM_DRTM_VERSION \ 59e62748e3SManish V Badarkhe ((((ARM_DRTM_VERSION_MAJOR) & ARM_DRTM_VERSION_MAJOR_MASK) << \ 60e62748e3SManish V Badarkhe ARM_DRTM_VERSION_MAJOR_SHIFT) \ 61e62748e3SManish V Badarkhe | (((ARM_DRTM_VERSION_MINOR) & ARM_DRTM_VERSION_MINOR_MASK) << \ 62e62748e3SManish V Badarkhe ARM_DRTM_VERSION_MINOR_SHIFT)) 63e62748e3SManish V Badarkhe 64e62748e3SManish V Badarkhe #define ARM_DRTM_FUNC_SHIFT U(63) 65e62748e3SManish V Badarkhe #define ARM_DRTM_FUNC_MASK U(0x1) 66e62748e3SManish V Badarkhe #define ARM_DRTM_FUNC_ID U(0x0) 67e62748e3SManish V Badarkhe #define ARM_DRTM_FEAT_ID U(0x1) 68e62748e3SManish V Badarkhe 69*2a1cdee4Sjohpow01 /* 70*2a1cdee4Sjohpow01 * Definitions for DRTM features as per DRTM beta0 section 3.3, 71*2a1cdee4Sjohpow01 * Table 6 DRTM_FEATURES 72*2a1cdee4Sjohpow01 */ 73*2a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_PCR_SCHEMA_SHIFT U(33) 74*2a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_PCR_SCHEMA_MASK ULL(0xF) 75*2a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_PCR_SCHEMA_DEFAULT ULL(0x1) 76*2a1cdee4Sjohpow01 77*2a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_TPM_HASH_SHIFT U(32) 78*2a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_TPM_HASH_MASK ULL(0x1) 79*2a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_TPM_HASH_NOT_SUPPORTED ULL(0x0) 80*2a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_TPM_HASH_SUPPORTED ULL(0x1) 81*2a1cdee4Sjohpow01 82*2a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_FW_HASH_SHIFT U(0) 83*2a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_FW_HASH_MASK ULL(0xFFFFFFFF) 84*2a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_FW_HASH_SHA256 ULL(0xB) 85*2a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_FW_HASH_SHA384 ULL(0xC) 86*2a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_FW_HASH_SHA512 ULL(0xD) 87*2a1cdee4Sjohpow01 88*2a1cdee4Sjohpow01 #define ARM_DRTM_MIN_MEM_REQ_DCE_SIZE_SHIFT U(32) 89*2a1cdee4Sjohpow01 #define ARM_DRTM_MIN_MEM_REQ_DCE_SIZE_MASK ULL(0xFFFFFFFF) 90*2a1cdee4Sjohpow01 91*2a1cdee4Sjohpow01 #define ARM_DRTM_MIN_MEM_REQ_MIN_DLME_DATA_SIZE_SHIFT U(0) 92*2a1cdee4Sjohpow01 #define ARM_DRTM_MIN_MEM_REQ_MIN_DLME_DATA_SIZE_MASK ULL(0xFFFFFFFF) 93*2a1cdee4Sjohpow01 94*2a1cdee4Sjohpow01 #define ARM_DRTM_DMA_PROT_FEATURES_MAX_REGIONS_SHIFT U(8) 95*2a1cdee4Sjohpow01 #define ARM_DRTM_DMA_PROT_FEATURES_MAX_REGIONS_MASK ULL(0xF) 96*2a1cdee4Sjohpow01 97*2a1cdee4Sjohpow01 #define ARM_DRTM_DMA_PROT_FEATURES_DMA_SUPPORT_SHIFT U(0) 98*2a1cdee4Sjohpow01 #define ARM_DRTM_DMA_PROT_FEATURES_DMA_SUPPORT_MASK ULL(0xFF) 99*2a1cdee4Sjohpow01 #define ARM_DRTM_DMA_PROT_FEATURES_DMA_SUPPORT_COMPLETE ULL(0x1) 100*2a1cdee4Sjohpow01 #define ARM_DRTM_DMA_PROT_FEATURES_DMA_SUPPORT_REGION ULL(0x2) 101*2a1cdee4Sjohpow01 102*2a1cdee4Sjohpow01 #define ARM_DRTM_TCB_HASH_FEATURES_MAX_NUM_HASHES_SHIFT U(0) 103*2a1cdee4Sjohpow01 #define ARM_DRTM_TCB_HASH_FEATURES_MAX_NUM_HASHES_MASK ULL(0xFF) 104*2a1cdee4Sjohpow01 105*2a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_SET_PCR_SCHEMA(reg, val) \ 106*2a1cdee4Sjohpow01 do { \ 107*2a1cdee4Sjohpow01 reg = (((reg) & ~(ARM_DRTM_TPM_FEATURES_PCR_SCHEMA_MASK \ 108*2a1cdee4Sjohpow01 << ARM_DRTM_TPM_FEATURES_PCR_SCHEMA_SHIFT)) | (((val) & \ 109*2a1cdee4Sjohpow01 ARM_DRTM_TPM_FEATURES_PCR_SCHEMA_MASK) << \ 110*2a1cdee4Sjohpow01 ARM_DRTM_TPM_FEATURES_PCR_SCHEMA_SHIFT)); \ 111*2a1cdee4Sjohpow01 } while (false) 112*2a1cdee4Sjohpow01 113*2a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_SET_TPM_HASH(reg, val) \ 114*2a1cdee4Sjohpow01 do { \ 115*2a1cdee4Sjohpow01 reg = (((reg) & ~(ARM_DRTM_TPM_FEATURES_TPM_HASH_MASK \ 116*2a1cdee4Sjohpow01 << ARM_DRTM_TPM_FEATURES_TPM_HASH_SHIFT)) | (((val) & \ 117*2a1cdee4Sjohpow01 ARM_DRTM_TPM_FEATURES_TPM_HASH_MASK) << \ 118*2a1cdee4Sjohpow01 ARM_DRTM_TPM_FEATURES_TPM_HASH_SHIFT)); \ 119*2a1cdee4Sjohpow01 } while (false) 120*2a1cdee4Sjohpow01 121*2a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_SET_FW_HASH(reg, val) \ 122*2a1cdee4Sjohpow01 do { \ 123*2a1cdee4Sjohpow01 reg = (((reg) & ~(ARM_DRTM_TPM_FEATURES_FW_HASH_MASK \ 124*2a1cdee4Sjohpow01 << ARM_DRTM_TPM_FEATURES_FW_HASH_SHIFT)) | (((val) & \ 125*2a1cdee4Sjohpow01 ARM_DRTM_TPM_FEATURES_FW_HASH_MASK) << \ 126*2a1cdee4Sjohpow01 ARM_DRTM_TPM_FEATURES_FW_HASH_SHIFT)); \ 127*2a1cdee4Sjohpow01 } while (false) 128*2a1cdee4Sjohpow01 129*2a1cdee4Sjohpow01 #define ARM_DRTM_MIN_MEM_REQ_SET_DCE_SIZE(reg, val) \ 130*2a1cdee4Sjohpow01 do { \ 131*2a1cdee4Sjohpow01 reg = (((reg) & ~(ARM_DRTM_MIN_MEM_REQ_DCE_SIZE_MASK \ 132*2a1cdee4Sjohpow01 << ARM_DRTM_MIN_MEM_REQ_DCE_SIZE_SHIFT)) | (((val) & \ 133*2a1cdee4Sjohpow01 ARM_DRTM_MIN_MEM_REQ_DCE_SIZE_MASK) << \ 134*2a1cdee4Sjohpow01 ARM_DRTM_MIN_MEM_REQ_DCE_SIZE_SHIFT)); \ 135*2a1cdee4Sjohpow01 } while (false) 136*2a1cdee4Sjohpow01 137*2a1cdee4Sjohpow01 #define ARM_DRTM_MIN_MEM_REQ_SET_MIN_DLME_DATA_SIZE(reg, val) \ 138*2a1cdee4Sjohpow01 do { \ 139*2a1cdee4Sjohpow01 reg = (((reg) & \ 140*2a1cdee4Sjohpow01 ~(ARM_DRTM_MIN_MEM_REQ_MIN_DLME_DATA_SIZE_MASK << \ 141*2a1cdee4Sjohpow01 ARM_DRTM_MIN_MEM_REQ_MIN_DLME_DATA_SIZE_SHIFT)) | \ 142*2a1cdee4Sjohpow01 (((val) & ARM_DRTM_MIN_MEM_REQ_MIN_DLME_DATA_SIZE_MASK) \ 143*2a1cdee4Sjohpow01 << ARM_DRTM_MIN_MEM_REQ_MIN_DLME_DATA_SIZE_SHIFT)); \ 144*2a1cdee4Sjohpow01 } while (false) 145*2a1cdee4Sjohpow01 146*2a1cdee4Sjohpow01 #define ARM_DRTM_DMA_PROT_FEATURES_SET_MAX_REGIONS(reg, val) \ 147*2a1cdee4Sjohpow01 do { \ 148*2a1cdee4Sjohpow01 reg = (((reg) & \ 149*2a1cdee4Sjohpow01 ~(ARM_DRTM_DMA_PROT_FEATURES_MAX_REGIONS_MASK << \ 150*2a1cdee4Sjohpow01 ARM_DRTM_DMA_PROT_FEATURES_MAX_REGIONS_SHIFT)) | \ 151*2a1cdee4Sjohpow01 (((val) & ARM_DRTM_DMA_PROT_FEATURES_MAX_REGIONS_MASK) \ 152*2a1cdee4Sjohpow01 << ARM_DRTM_DMA_PROT_FEATURES_MAX_REGIONS_SHIFT)); \ 153*2a1cdee4Sjohpow01 } while (false) 154*2a1cdee4Sjohpow01 155*2a1cdee4Sjohpow01 #define ARM_DRTM_DMA_PROT_FEATURES_SET_DMA_SUPPORT(reg, val) \ 156*2a1cdee4Sjohpow01 do { \ 157*2a1cdee4Sjohpow01 reg = (((reg) & \ 158*2a1cdee4Sjohpow01 ~(ARM_DRTM_DMA_PROT_FEATURES_DMA_SUPPORT_MASK << \ 159*2a1cdee4Sjohpow01 ARM_DRTM_DMA_PROT_FEATURES_DMA_SUPPORT_SHIFT)) | \ 160*2a1cdee4Sjohpow01 (((val) & ARM_DRTM_DMA_PROT_FEATURES_DMA_SUPPORT_MASK) \ 161*2a1cdee4Sjohpow01 << ARM_DRTM_DMA_PROT_FEATURES_DMA_SUPPORT_SHIFT)); \ 162*2a1cdee4Sjohpow01 } while (false) 163*2a1cdee4Sjohpow01 164*2a1cdee4Sjohpow01 #define ARM_DRTM_TCB_HASH_FEATURES_SET_MAX_NUM_HASHES(reg, val) \ 165*2a1cdee4Sjohpow01 do { \ 166*2a1cdee4Sjohpow01 reg = (((reg) & \ 167*2a1cdee4Sjohpow01 ~(ARM_DRTM_TCB_HASH_FEATURES_MAX_NUM_HASHES_MASK << \ 168*2a1cdee4Sjohpow01 ARM_DRTM_TCB_HASH_FEATURES_MAX_NUM_HASHES_SHIFT)) | \ 169*2a1cdee4Sjohpow01 (((val) & \ 170*2a1cdee4Sjohpow01 ARM_DRTM_TCB_HASH_FEATURES_MAX_NUM_HASHES_MASK) << \ 171*2a1cdee4Sjohpow01 ARM_DRTM_TCB_HASH_FEATURES_MAX_NUM_HASHES_SHIFT)); \ 172*2a1cdee4Sjohpow01 } while (false) 173*2a1cdee4Sjohpow01 174*2a1cdee4Sjohpow01 /* Definitions for DRTM address map */ 175*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_SHIFT U(55) 176*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_MASK ULL(0x3) 177*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_NC ULL(0) 178*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_WC ULL(1) 179*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_WT ULL(2) 180*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_WB ULL(3) 181*2a1cdee4Sjohpow01 182*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_SHIFT U(52) 183*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_MASK ULL(0x7) 184*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_NORMAL ULL(0) 185*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_NCAR ULL(1) 186*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_DEVICE ULL(2) 187*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_NV ULL(3) 188*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_RSVD ULL(4) 189*2a1cdee4Sjohpow01 190*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_4K_PAGE_NUM_SHIFT U(0) 191*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_4K_PAGE_NUM_MASK ULL(0xFFFFFFFFFFFFF) 192*2a1cdee4Sjohpow01 193*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_SET_CACHEABILITY(reg, val) \ 194*2a1cdee4Sjohpow01 do { \ 195*2a1cdee4Sjohpow01 reg = (((reg) & \ 196*2a1cdee4Sjohpow01 ~(ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_MASK << \ 197*2a1cdee4Sjohpow01 ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_SHIFT)) | \ 198*2a1cdee4Sjohpow01 (((val) & \ 199*2a1cdee4Sjohpow01 ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_MASK) << \ 200*2a1cdee4Sjohpow01 ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_SHIFT)); \ 201*2a1cdee4Sjohpow01 } while (false) 202*2a1cdee4Sjohpow01 203*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_SET_REGION_TYPE(reg, val) \ 204*2a1cdee4Sjohpow01 do { \ 205*2a1cdee4Sjohpow01 reg = (((reg) & \ 206*2a1cdee4Sjohpow01 ~(ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_MASK << \ 207*2a1cdee4Sjohpow01 ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_SHIFT)) | \ 208*2a1cdee4Sjohpow01 (((val) & ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_MASK) \ 209*2a1cdee4Sjohpow01 << ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_SHIFT)); \ 210*2a1cdee4Sjohpow01 } while (false) 211*2a1cdee4Sjohpow01 212*2a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_SET_4K_PAGE_NUM(reg, val) \ 213*2a1cdee4Sjohpow01 do { \ 214*2a1cdee4Sjohpow01 reg = (((reg) & \ 215*2a1cdee4Sjohpow01 ~(ARM_DRTM_REGION_SIZE_TYPE_4K_PAGE_NUM_MASK << \ 216*2a1cdee4Sjohpow01 ARM_DRTM_REGION_SIZE_TYPE_4K_PAGE_NUM_SHIFT)) | \ 217*2a1cdee4Sjohpow01 (((val) & ARM_DRTM_REGION_SIZE_TYPE_4K_PAGE_NUM_MASK) \ 218*2a1cdee4Sjohpow01 << ARM_DRTM_REGION_SIZE_TYPE_4K_PAGE_NUM_SHIFT)); \ 219*2a1cdee4Sjohpow01 } while (false) 220*2a1cdee4Sjohpow01 221e62748e3SManish V Badarkhe /* Initialization routine for the DRTM service */ 222e62748e3SManish V Badarkhe int drtm_setup(void); 223e62748e3SManish V Badarkhe 224e62748e3SManish V Badarkhe /* Handler to be called to handle DRTM SMC calls */ 225e62748e3SManish V Badarkhe uint64_t drtm_smc_handler(uint32_t smc_fid, 226e62748e3SManish V Badarkhe uint64_t x1, 227e62748e3SManish V Badarkhe uint64_t x2, 228e62748e3SManish V Badarkhe uint64_t x3, 229e62748e3SManish V Badarkhe uint64_t x4, 230e62748e3SManish V Badarkhe void *cookie, 231e62748e3SManish V Badarkhe void *handle, 232e62748e3SManish V Badarkhe uint64_t flags); 233e62748e3SManish V Badarkhe 234e62748e3SManish V Badarkhe #endif /* ARM_DRTM_SVC_H */ 235