qemu-e2k/target/arm
Peter Maydell ed89f078ff target/arm: Track the state of our irq lines from the GIC explicitly
Currently we track the state of the four irq lines from the GIC
only via the cs->interrupt_request or KVM irq state. That means
that we assume that an interrupt is asserted if and only if the
external line is set. This assumption is incorrect for VIRQ
and VFIQ, because the HCR_EL2.{VI,VF} bits allow assertion
of VIRQ and VFIQ separately from the state of the external line.

To handle this, start tracking the state of the external lines
explicitly in a CPU state struct field, as is common practice
for devices.

The complicated part of this is dealing with inbound migration
from an older QEMU which didn't have this state. We assume in
that case that the older QEMU did not implement the HCR_EL2.{VI,VF}
bits as generating interrupts, and so the line state matches
the current state in cs->interrupt_request. (This is not quite
true between commit 8a0fc3a29f and its revert, but
that commit is broken and never made it into any released QEMU
version.)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-id: 20181109134731.11605-3-peter.maydell@linaro.org
2018-11-13 10:47:59 +00:00
..
Makefile.objs target/arm: Implement SVE predicate test 2018-05-18 17:48:08 +01:00
arch_dump.c target/arm: Add aa{32, 64}_vfp_{dreg, qreg} helpers 2018-01-25 11:45:29 +00:00
arm-powerctl.c target-arm: powerctl: Enable HVC when starting CPUs to EL2 2018-10-16 17:14:55 +01:00
arm-powerctl.h target-arm/powerctl: defer cpu reset work to CPU context 2017-02-24 10:32:46 +00:00
arm-semi.c target/arm: Remove a handful of stray tabs 2018-08-24 13:17:48 +01:00
arm_ldst.h target: Do not include "exec/exec-all.h" if it is not necessary 2018-06-01 14:15:10 +02:00
cpu-qom.h target/arm: Add "-cpu max" support 2018-03-09 17:09:44 +00:00
cpu.c target/arm: Track the state of our irq lines from the GIC explicitly 2018-11-13 10:47:59 +00:00
cpu.h target/arm: Track the state of our irq lines from the GIC explicitly 2018-11-13 10:47:59 +00:00
cpu64.c target/arm: Convert v8.2-fp16 from feature bit to aa64pfr0 test 2018-10-24 07:51:31 +01:00
crypto_helper.c target: Do not include "exec/exec-all.h" if it is not necessary 2018-06-01 14:15:10 +02:00
gdbstub.c arm: fix malloc type mismatch 2018-05-31 14:50:52 +01:00
gdbstub64.c
helper-a64.c target/arm: Check HAVE_CMPXCHG128 at translate time 2018-10-18 19:46:53 -07:00
helper-a64.h target/arm: Implement FCMP for fp16 2018-05-15 14:58:43 +01:00
helper-sve.h target/arm: Rewrite vector gather first-fault loads 2018-10-08 14:55:03 +01:00
helper.c Revert "target/arm: Implement HCR.VI and VF" 2018-11-13 10:47:59 +00:00
helper.h target/arm: Add v8M stack checks on ADD/SUB/MOV of SP 2018-10-08 14:55:04 +01:00
idau.h target/arm: Define an IDAU interface 2018-03-02 11:03:45 +00:00
internals.h target/arm: Report correct syndrome for FP/SIMD traps to Hyp mode 2018-10-24 07:51:36 +01:00
iwmmxt_helper.c target/arm: Untabify iwmmxt_helper.c 2018-08-24 13:17:48 +01:00
kvm-consts.h arm: add trailing ; after MISMATCH_CHECK 2017-02-01 03:37:18 +02:00
kvm-stub.c
kvm.c target/arm: Add support for VCPU event states 2018-10-24 07:50:16 +01:00
kvm32.c target/arm: Add support for VCPU event states 2018-10-24 07:50:16 +01:00
kvm64.c target/arm64: kvm debug set target_el when passing exception to guest 2018-11-13 10:47:59 +00:00
kvm_arm.h target/arm: Add support for VCPU event states 2018-10-24 07:50:16 +01:00
machine.c target/arm: Track the state of our irq lines from the GIC explicitly 2018-11-13 10:47:59 +00:00
monitor.c qapi: Empty out qapi-schema.json 2018-03-02 13:45:50 -06:00
neon_helper.c target: Do not include "exec/exec-all.h" if it is not necessary 2018-06-01 14:15:10 +02:00
op_addsub.h
op_helper.c target/arm: New utility function to extract EC from syndrome 2018-10-24 07:51:36 +01:00
psci.c target: Do not include "exec/exec-all.h" if it is not necessary 2018-06-01 14:15:10 +02:00
sve.decode target/arm: Implement SVE dot product (indexed) 2018-06-29 15:11:15 +01:00
sve_helper.c target/arm: Pass TCGMemOpIdx to sve memory helpers 2018-10-08 14:55:03 +01:00
trace-events target/arm/kvm: Translate the MSI doorbell in kvm_arch_fixup_msi_route 2018-05-04 18:52:58 +01:00
translate-a64.c target/arm: Remove can't-happen if() from handle_vec_simd_shli() 2018-11-06 11:32:13 +00:00
translate-a64.h target/arm: Extend vec_reg_offset to larger sizes 2018-06-15 15:23:34 +01:00
translate-sve.c decodetree: Remove "insn" argument from trans_* expanders 2018-10-31 16:48:54 +00:00
translate.c target/arm: Reorg NEON VLD/VST single element to one lane 2018-10-24 07:51:37 +01:00
translate.h target/arm: Use gvec for NEON_3R_VTST_VCEQ, NEON_3R_VCGT, NEON_3R_VCGE 2018-10-24 07:51:37 +01:00
vec_helper.c target/arm: Implement SVE dot product (indexed) 2018-06-29 15:11:15 +01:00