diff --git a/qemu/target/arm/helper.c b/qemu/target/arm/helper.c index 86c8a4c3..279498b9 100644 --- a/qemu/target/arm/helper.c +++ b/qemu/target/arm/helper.c @@ -5647,6 +5647,20 @@ static void arm_cpu_do_interrupt_aarch32_(CPUState *cs) new_mode = ARM_CPU_MODE_MON; } break; + case EXCP_VIRQ: + new_mode = ARM_CPU_MODE_IRQ; + addr = 0x18; + /* Disable IRQ and imprecise data aborts. */ + mask = CPSR_A | CPSR_I; + offset = 4; + break; + case EXCP_VFIQ: + new_mode = ARM_CPU_MODE_FIQ; + addr = 0x1c; + /* Disable FIQ, IRQ and imprecise data aborts. */ + mask = CPSR_A | CPSR_I | CPSR_F; + offset = 4; + break; case EXCP_SMC: new_mode = ARM_CPU_MODE_MON; addr = 0x08;