mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
target/arm: Implement EXLOCK check during exception return
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20251008215613.300150-62-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
committed by
Peter Maydell
parent
d77ed96016
commit
70440a5858
@@ -675,6 +675,17 @@ void HELPER(exception_return)(CPUARMState *env, uint64_t new_pc)
|
||||
goto illegal_return;
|
||||
}
|
||||
|
||||
/*
|
||||
* If GetCurrentEXLOCKEN, the exception return path must use GCSPOPCX,
|
||||
* which will set PSTATE.EXLOCK. We need not explicitly check FEAT_GCS,
|
||||
* because GCSCR_ELx cannot be set without it.
|
||||
*/
|
||||
if (new_el == cur_el &&
|
||||
(env->cp15.gcscr_el[cur_el] & GCSCR_EXLOCKEN) &&
|
||||
!(env->pstate & PSTATE_EXLOCK)) {
|
||||
goto illegal_return;
|
||||
}
|
||||
|
||||
bql_lock();
|
||||
arm_call_pre_el_change_hook(cpu);
|
||||
bql_unlock();
|
||||
|
||||
Reference in New Issue
Block a user