diff --git a/services/std_svc/sdei/sdei_intr_mgmt.c b/services/std_svc/sdei/sdei_intr_mgmt.c index a7104b4..d6324b9 100644 --- a/services/std_svc/sdei/sdei_intr_mgmt.c +++ b/services/std_svc/sdei/sdei_intr_mgmt.c @@ -8,7 +8,6 @@ #include #include #include -#include #include #include #include diff --git a/services/std_svc/sdei/sdei_main.c b/services/std_svc/sdei/sdei_main.c index f881ba8..d6d092d 100644 --- a/services/std_svc/sdei/sdei_main.c +++ b/services/std_svc/sdei/sdei_main.c @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include diff --git a/services/std_svc/sdei/sdei_private.h b/services/std_svc/sdei/sdei_private.h index 45d537f..ec4148c 100644 --- a/services/std_svc/sdei/sdei_private.h +++ b/services/std_svc/sdei/sdei_private.h @@ -8,6 +8,7 @@ #define __SDEI_PRIVATE_H__ #include +#include #include #include #include @@ -159,7 +160,11 @@ */ static inline unsigned int sdei_client_el(void) { - return read_scr_el3() & SCR_HCE_BIT ? MODE_EL2 : MODE_EL1; + cpu_context_t *ns_ctx = cm_get_context(NON_SECURE); + el3_state_t *el3_ctx = get_el3state_ctx(ns_ctx); + + return read_ctx_reg(el3_ctx, CTX_SPSR_EL3) & SCR_HCE_BIT ? MODE_EL2 : + MODE_EL1; } static inline unsigned int sdei_event_priority(sdei_ev_map_t *map)