diff --git a/core/arch/arm/include/sm/optee_smc.h b/core/arch/arm/include/sm/optee_smc.h index 58b2e545ea8..51c46e34981 100644 --- a/core/arch/arm/include/sm/optee_smc.h +++ b/core/arch/arm/include/sm/optee_smc.h @@ -276,7 +276,8 @@ #define OPTEE_SMC_SEC_CAP_DYNAMIC_SHM (1 << 2) /* Secure world is built with virtualization support */ #define OPTEE_SMC_SEC_CAP_VIRTUALIZATION (1 << 3) - +/* Secure world is built with OCALL support */ +#define OPTEE_SMC_SEC_CAP_OCALL (1 << 4) #define OPTEE_SMC_FUNCID_EXCHANGE_CAPABILITIES 9 #define OPTEE_SMC_EXCHANGE_CAPABILITIES \ diff --git a/core/arch/arm/tee/entry_fast.c b/core/arch/arm/tee/entry_fast.c index 0bee06bbd5d..1af0485b19d 100644 --- a/core/arch/arm/tee/entry_fast.c +++ b/core/arch/arm/tee/entry_fast.c @@ -91,6 +91,9 @@ static void tee_entry_exchange_capabilities(struct thread_smc_args *args) #ifdef CFG_VIRTUALIZATION args->a1 |= OPTEE_SMC_SEC_CAP_VIRTUALIZATION; #endif +#if defined(CFG_OCALL) + args->a1 |= OPTEE_SMC_SEC_CAP_OCALL; +#endif #if defined(CFG_CORE_DYN_SHM) dyn_shm_en = core_mmu_nsec_ddr_is_defined();