qemu-irix/target-arm
Peter Maydell 27fb65dd1b 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-08-05 13:33:30 -05:00
..
Makefile.objs target-arm: A64: add stubs for a64 specific helpers 2013-12-17 19:42:32 +00:00
arm-semi.c cpu: Move opaque field from CPU_COMMON to CPUState 2014-03-13 19:20:47 +01:00
cpu-qom.h target-arm: Implement AArch64 ID and feature registers 2014-02-26 17:20:05 +00:00
cpu.c cputlb: Change tlb_flush() argument to CPUState 2014-03-13 19:52:47 +01:00
cpu.h cpu: Turn cpu_handle_mmu_fault() into a CPUClass hook 2014-03-13 19:20:46 +01:00
cpu64.c target-arm: A64: Make cache ID registers visible to AArch64 2014-02-26 17:20:01 +00:00
crypto_helper.c target-arm: add support for v8 AES instructions 2013-12-17 19:42:25 +00:00
gdbstub.c cpu: Introduce CPUClass::gdb_{read,write}_register() 2013-07-27 00:04:17 +02:00
gdbstub64.c target-arm: Clean up handling of AArch64 PSTATE 2013-12-17 19:42:30 +00:00
helper-a64.c target-arm: A64: Implement FCVTXN 2014-03-17 16:31:53 +00:00
helper-a64.h target-arm: A64: Implement FCVTXN 2014-03-17 16:31:53 +00:00
helper.c target-arm: Fix errors in writes to generic timer control registers 2014-08-05 13:33:30 -05:00
helper.h target-arm: A64: Add saturating accumulate ops (USQADD/SUQADD) 2014-03-18 23:10:06 +00:00
iwmmxt_helper.c misc: Use new rotate functions 2013-09-25 21:23:05 +02:00
kvm-consts.h target-arm/kvm-consts.h: Define QEMU constants for known KVM CPUs 2014-02-20 10:35:50 +00:00
kvm-stub.c target-arm: Initialize cpreg list from KVM when using KVM 2013-06-25 18:16:10 +01:00
kvm.c arm: vgic device control api support 2014-02-26 17:20:00 +00:00
kvm32.c target-arm/kvm: Split 32 bit only code into its own file 2013-12-17 19:42:29 +00:00
kvm64.c target-arm: Add minimal KVM AArch64 support 2013-12-17 19:42:30 +00:00
kvm_arm.h arm: vgic device control api support 2014-02-26 17:20:00 +00:00
machine.c target-arm: Add missing 'static' attribute 2014-03-27 19:22:48 +04:00
neon_helper.c target-arm: A64: Add saturating accumulate ops (USQADD/SUQADD) 2014-03-18 23:10:06 +00:00
op_addsub.h Correct spelling of licensed 2011-07-23 11:26:12 -05:00
op_helper.c translate-all: Change cpu_restore_state() argument to CPUState 2014-03-13 19:20:47 +01:00
translate-a64.c target-arm: A64: Handle blr lr 2014-07-20 22:15:16 -05:00
translate.c arm: translate.c: Fix smlald Instruction 2014-07-20 22:05:56 -05:00
translate.h target-arm: A64: Implement PMULL instruction 2014-03-17 16:31:47 +00:00