[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 2/2] arm_mptimer: Respect IT bit state
From: |
Dmitry Osipenko |
Subject: |
[Qemu-devel] [PATCH v2 2/2] arm_mptimer: Respect IT bit state |
Date: |
Sun, 5 Jul 2015 18:39:02 +0300 |
Timer should fire interrupt only if IT(interrupt enable) bit state of control
register is enabled and timer should update IRQ status on IT bit change as it
would mask/unmask the interrupt line.
Signed-off-by: Dmitry Osipenko <address@hidden>
---
v2: Added missed IRQ status update on control register write as per
Peter Crosthwaite comment.
hw/timer/arm_mptimer.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/hw/timer/arm_mptimer.c b/hw/timer/arm_mptimer.c
index 0e132b1..22fa46e 100644
--- a/hw/timer/arm_mptimer.c
+++ b/hw/timer/arm_mptimer.c
@@ -38,7 +38,7 @@ static inline int get_current_cpu(ARMMPTimerState *s)
static inline void timerblock_update_irq(TimerBlock *tb)
{
- qemu_set_irq(tb->irq, tb->status);
+ qemu_set_irq(tb->irq, tb->status && (tb->control & 4));
}
/* Return conversion factor from mpcore timer ticks to qemu timer ticks. */
@@ -122,6 +122,9 @@ static void timerblock_write(void *opaque, hwaddr addr,
case 8: /* Control. */
old = tb->control;
tb->control = value;
+ if ((old & 4) != (value & 4)) {
+ timerblock_update_irq(tb);
+ }
if (value & 1) {
if ((old & 1) && (tb->count != 0)) {
/* Do nothing if timer is ticking right now. */
--
2.4.4
- Re: [Qemu-devel] [PATCH 2/3] arm_mptimer: Fix ONE-SHOT -> PERIODIC mode change, (continued)
- [Qemu-devel] [PATCH v2 2/2] arm_mptimer: Respect IT bit state,
Dmitry Osipenko <=
- Re: [Qemu-devel] [v2] arm_mptimer fixes, Peter Crosthwaite, 2015/07/05
[Qemu-devel] [PATCH v3 0/2] arm_mptimer fixes, Dmitry Osipenko, 2015/07/05