[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 7/7] target-arm: Correct condition for taking VIRQ an
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [PULL 7/7] target-arm: Correct condition for taking VIRQ and VFIQ |
Date: |
Tue, 4 Nov 2014 12:30:26 +0000 |
The VIRQ and VFIQ exceptions are (as the comments say) only
taken if the CPU is in Non-secure state and the IMO/FMO bits
are set to enable virtualized interrupts. Correct the code
to actually implement this.
Signed-off-by: Peter Maydell <address@hidden>
Reviewed-by: Edgar E. Iglesias <address@hidden>
Message-id: address@hidden
---
target-arm/cpu.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/target-arm/cpu.h b/target-arm/cpu.h
index 97eaf79..7f80090 100644
--- a/target-arm/cpu.h
+++ b/target-arm/cpu.h
@@ -1269,13 +1269,13 @@ static inline bool arm_excp_unmasked(CPUState *cs,
unsigned int excp_idx)
}
return !(env->daif & PSTATE_I);
case EXCP_VFIQ:
- if (!secure && !(env->cp15.hcr_el2 & HCR_FMO)) {
+ if (secure || !(env->cp15.hcr_el2 & HCR_FMO)) {
/* VFIQs are only taken when hypervized and non-secure. */
return false;
}
return !(env->daif & PSTATE_F);
case EXCP_VIRQ:
- if (!secure && !(env->cp15.hcr_el2 & HCR_IMO)) {
+ if (secure || !(env->cp15.hcr_el2 & HCR_IMO)) {
/* VIRQs are only taken when hypervized and non-secure. */
return false;
}
--
1.9.1
- [Qemu-devel] [PULL 0/7] target-arm queue, Peter Maydell, 2014/11/04
- [Qemu-devel] [PULL 7/7] target-arm: Correct condition for taking VIRQ and VFIQ,
Peter Maydell <=
- [Qemu-devel] [PULL 6/7] target-arm: Separate out M profile cpu_exec_interrupt handling, Peter Maydell, 2014/11/04
- [Qemu-devel] [PULL 2/7] target-arm/translate.c: Use arm_dc_feature() rather than arm_feature(), Peter Maydell, 2014/11/04
- [Qemu-devel] [PULL 4/7] target-arm/translate.c: Don't pass CPUARMState around in the decoder, Peter Maydell, 2014/11/04
- [Qemu-devel] [PULL 1/7] target-arm/translate.c: Use arm_dc_feature() in ENABLE_ARCH_ macros, Peter Maydell, 2014/11/04
- [Qemu-devel] [PULL 5/7] target-arm/translate.c: Don't pass CPUARMState * to disas_arm_insn(), Peter Maydell, 2014/11/04
- [Qemu-devel] [PULL 3/7] target-arm/translate.c: Don't use IS_M(), Peter Maydell, 2014/11/04
- Re: [Qemu-devel] [PULL 0/7] target-arm queue, Peter Maydell, 2014/11/04