[PATCH v5 63/76] target/arm: Copy EXLOCKEn to EXLOCK on exception to the same EL

Richard Henderson posted 76 patches 5 days, 21 hours ago
[PATCH v5 63/76] target/arm: Copy EXLOCKEn to EXLOCK on exception to the same EL
Posted by Richard Henderson 5 days, 21 hours ago
Per R_WTXBY, PSTATE.EXLOCK is 0 on an exception to a higher EL,
and copied from EXLOCKEn otherwise.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/arm/helper.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/target/arm/helper.c b/target/arm/helper.c
index e90398acc9..d98f9b0d70 100644
--- a/target/arm/helper.c
+++ b/target/arm/helper.c
@@ -9057,8 +9057,13 @@ static void arm_cpu_do_interrupt_aarch64(CPUState *cs)
         } else {
             addr += 0x600;
         }
-    } else if (pstate_read(env) & PSTATE_SP) {
-        addr += 0x200;
+    } else {
+        if (pstate_read(env) & PSTATE_SP) {
+            addr += 0x200;
+        }
+        if (is_a64(env) && (env->cp15.gcscr_el[new_el] & GCSCR_EXLOCKEN)) {
+            new_mode |= PSTATE_EXLOCK;
+        }
     }
 
     switch (cs->exception_index) {
-- 
2.43.0