diff --git a/bl31/aarch64/runtime_exceptions.S b/bl31/aarch64/runtime_exceptions.S index 57c065c..60be932 100644 --- a/bl31/aarch64/runtime_exceptions.S +++ b/bl31/aarch64/runtime_exceptions.S @@ -390,12 +390,12 @@ * content). Either way, we aren't leaking any secure information * through them. */ - mov w0, #SMC_UNK + mov x0, #SMC_UNK b restore_gp_registers_callee_eret smc_prohibited: ldr x30, [sp, #CTX_GPREGS_OFFSET + CTX_GPREG_LR] - mov w0, #SMC_UNK + mov x0, #SMC_UNK eret rt_svc_fw_critical_error: diff --git a/include/lib/smcc.h b/include/lib/smcc.h index a273b3a..0a2d927 100644 --- a/include/lib/smcc.h +++ b/include/lib/smcc.h @@ -35,13 +35,13 @@ #define SMC_64 U(1) #define SMC_32 U(0) #define SMC_OK U(0) -#define SMC_UNK U(0xffffffff) +#define SMC_UNK -1 #define SMC_TYPE_FAST ULL(1) #if !ERROR_DEPRECATED #define SMC_TYPE_STD ULL(0) #endif #define SMC_TYPE_YIELD U(0) -#define SMC_PREEMPTED U(0xfffffffe) +#define SMC_PREEMPTED -2 /******************************************************************************* * Owning entity number definitions inside the function id as per the SMC * calling convention @@ -99,7 +99,7 @@ */ #define DEFINE_SVC_UUID(_name, _tl, _tm, _th, _cl, _ch, \ _n0, _n1, _n2, _n3, _n4, _n5) \ - CASSERT(_tl != SMC_UNK, invalid_svc_uuid);\ + CASSERT((uint32_t)(_tl) != (uint32_t) SMC_UNK, invalid_svc_uuid);\ static const uuid_t _name = { \ _tl, _tm, _th, _cl, _ch, \ { _n0, _n1, _n2, _n3, _n4, _n5 } \