aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/arch/arm/include/sm/sm.h2
-rw-r--r--core/arch/arm/sm/sm.c10
2 files changed, 7 insertions, 5 deletions
diff --git a/core/arch/arm/include/sm/sm.h b/core/arch/arm/include/sm/sm.h
index a03c920b..16792cff 100644
--- a/core/arch/arm/include/sm/sm.h
+++ b/core/arch/arm/include/sm/sm.h
@@ -118,13 +118,11 @@ enum sm_handler_ret {
SM_HANDLER_PENDING_SMC,
};
-#ifdef CFG_SM_PLATFORM_HANDLER
/*
* Returns whether SMC was handled from platform handler in secure monitor
* or if it shall reach OP-TEE core .
*/
enum sm_handler_ret sm_platform_handler(struct sm_ctx *ctx);
-#endif
void sm_save_unbanked_regs(struct sm_unbanked_regs *regs);
void sm_restore_unbanked_regs(struct sm_unbanked_regs *regs);
diff --git a/core/arch/arm/sm/sm.c b/core/arch/arm/sm/sm.c
index a668d15e..44a4cd5e 100644
--- a/core/arch/arm/sm/sm.c
+++ b/core/arch/arm/sm/sm.c
@@ -15,6 +15,11 @@
#include <string.h>
#include "sm_private.h"
+enum sm_handler_ret __weak sm_platform_handler(struct sm_ctx *ctx __unused)
+{
+ return SM_HANDLER_PENDING_SMC;
+}
+
static void smc_arch_handler(struct thread_smc_args *args)
{
uint32_t smc_fid = args->a0;
@@ -62,10 +67,9 @@ uint32_t sm_from_nsec(struct sm_ctx *ctx)
COMPILE_TIME_ASSERT(!(offsetof(struct sm_ctx, nsec.r0) % 8));
COMPILE_TIME_ASSERT(!(sizeof(struct sm_ctx) % 8));
-#ifdef CFG_SM_PLATFORM_HANDLER
- if (sm_platform_handler(ctx) == SM_HANDLER_SMC_HANDLED)
+ if (IS_ENABLED(CFG_SM_PLATFORM_HANDLER) &&
+ sm_platform_handler(ctx) == SM_HANDLER_SMC_HANDLED)
return SM_EXIT_TO_NON_SECURE;
-#endif
switch (OPTEE_SMC_OWNER_NUM(args->a0)) {
case OPTEE_SMC_OWNER_STANDARD: