mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 02:24:58 -06:00
target/arm: Implement ESB instruction
Check for and defer any pending virtual SError. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20220506180242.216785-17-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
3c29632feb
commit
13954587ea
6 changed files with 103 additions and 15 deletions
|
@ -1454,6 +1454,23 @@ static void handle_hint(DisasContext *s, uint32_t insn,
|
|||
gen_helper_autib(cpu_X[17], cpu_env, cpu_X[17], cpu_X[16]);
|
||||
}
|
||||
break;
|
||||
case 0b10000: /* ESB */
|
||||
/* Without RAS, we must implement this as NOP. */
|
||||
if (dc_isar_feature(aa64_ras, s)) {
|
||||
/*
|
||||
* QEMU does not have a source of physical SErrors,
|
||||
* so we are only concerned with virtual SErrors.
|
||||
* The pseudocode in the ARM for this case is
|
||||
* if PSTATE.EL IN {EL0, EL1} && EL2Enabled() then
|
||||
* AArch64.vESBOperation();
|
||||
* Most of the condition can be evaluated at translation time.
|
||||
* Test for EL2 present, and defer test for SEL2 to runtime.
|
||||
*/
|
||||
if (s->current_el <= 1 && arm_dc_feature(s, ARM_FEATURE_EL2)) {
|
||||
gen_helper_vesb(cpu_env);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0b11000: /* PACIAZ */
|
||||
if (s->pauth_active) {
|
||||
gen_helper_pacia(cpu_X[30], cpu_env, cpu_X[30],
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue