xemu/target-arm
Peter Maydell f784615221 target-arm: Fix errors in writes to generic timer control registers
The code for handling writes to the generic timer control registers
had several bugs:
 * ISTATUS (bit 2) is read-only but we forced it to zero on any write
 * the check for "was IMASK (bit 1) toggled?" incorrectly used '&' where
   it should be '^'
 * the handling of IMASK was inverted: we should set the IRQ if
   ISTATUS is set and IMASK is clear, not if both are set

The combination of these bugs meant that when running a Linux guest
that uses the generic timers we would fairly quickly end up either
forgetting that the timer output should be asserted, or failing to
set the IRQ when the timer was unmasked. The result is that the guest
never gets any more timer interrupts.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 1401803208-1281-1-git-send-email-peter.maydell@linaro.org
Cc: qemu-stable@nongnu.org
(cherry picked from commit d3afacc726)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2014-07-03 16:31:30 -05:00
..
Makefile.objs Makefile.target: CONFIG_NO_* variables removed 2013-10-16 18:21:00 +02:00
arm-semi.c exec: Change cpu_memory_rw_debug() argument to CPUState 2013-07-23 02:41:33 +02:00
cpu-qom.h target-arm: Add AArch64 gdbstub support 2013-09-10 19:11:28 +01:00
cpu.c target-arm: Prepare translation for AArch64 code 2013-09-10 19:11:28 +01:00
cpu.h target-arm: Add CP15 VBAR support 2013-10-31 14:00:16 +01:00
cpu64.c target-arm: Add AArch64 gdbstub support 2013-09-10 19:11:28 +01:00
gdbstub.c cpu: Introduce CPUClass::gdb_{read,write}_register() 2013-07-27 00:04:17 +02:00
gdbstub64.c target-arm: Add AArch64 gdbstub support 2013-09-10 19:11:28 +01:00
helper.c target-arm: Fix errors in writes to generic timer control registers 2014-07-03 16:31:30 -05:00
helper.h tcg: Remove stray semi-colons from target-*/helper.h 2013-10-10 11:43:37 -07:00
iwmmxt_helper.c misc: Use new rotate functions 2013-09-25 21:23:05 +02:00
kvm-stub.c target-arm: Initialize cpreg list from KVM when using KVM 2013-06-25 18:16:10 +01:00
kvm.c target-arm: fix sorting issue of KVM cpreg list 2013-10-31 14:00:16 +01:00
kvm_arm.h target-arm: Initialize cpreg list from KVM when using KVM 2013-06-25 18:16:10 +01:00
machine.c vmstate: s/VMSTATE_INT32_LE/VMSTATE_INT32_POSITIVE_LE/ 2014-06-26 14:21:46 -05:00
neon_helper.c exec: move include files to include/exec/ 2012-12-19 08:31:31 +01:00
op_addsub.h Correct spelling of licensed 2011-07-23 11:26:12 -05:00
op_helper.c cpu: Move halted and interrupt_request fields to CPUState 2013-03-12 10:35:55 +01:00
translate-a64.c target-arm: Add AArch64 translation stub 2013-09-10 19:11:28 +01:00
translate.c arm: translate.c: Fix smlald Instruction 2014-06-25 16:08:05 -05:00
translate.h target-arm: Add AArch64 translation stub 2013-09-10 19:11:28 +01:00