From 6b704da34b66e5239b7f570842df614db94af521 Mon Sep 17 00:00:00 2001 From: Ruari Phipps Date: Tue, 28 Jul 2020 11:26:29 +0100 Subject: [PATCH] SPM: Change condition on saving/restoring EL2 registers Make this more scalable by explicitly checking internal and hardware states at run_time Signed-off-by: Ruari Phipps Change-Id: I1c6ed1c1badb3538a93bff3ac5b5189b59cccfa1 --- lib/el3_runtime/aarch64/context_mgmt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/el3_runtime/aarch64/context_mgmt.c b/lib/el3_runtime/aarch64/context_mgmt.c index f4a34bfaa..e5434eb13 100644 --- a/lib/el3_runtime/aarch64/context_mgmt.c +++ b/lib/el3_runtime/aarch64/context_mgmt.c @@ -585,7 +585,7 @@ void cm_el2_sysregs_context_save(uint32_t security_state) * S-EL2 context if S-EL2 is enabled. */ if ((security_state == NON_SECURE) || - ((scr_el3 & SCR_EEL2_BIT) != 0U)) { + ((security_state == SECURE) && ((scr_el3 & SCR_EEL2_BIT) != 0U))) { cpu_context_t *ctx; ctx = cm_get_context(security_state); @@ -607,7 +607,7 @@ void cm_el2_sysregs_context_restore(uint32_t security_state) * S-EL2 context if S-EL2 is enabled. */ if ((security_state == NON_SECURE) || - ((scr_el3 & SCR_EEL2_BIT) != 0U)) { + ((security_state == SECURE) && ((scr_el3 & SCR_EEL2_BIT) != 0U))) { cpu_context_t *ctx; ctx = cm_get_context(security_state);