aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hw/i8259.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/hw/i8259.c b/hw/i8259.c
index c21f0d3060..221506b28f 100644
--- a/hw/i8259.c
+++ b/hw/i8259.c
@@ -188,7 +188,9 @@ static inline void pic_intack(PicState *s, int irq)
} else {
s->isr |= (1 << irq);
}
- s->irr &= ~(1 << irq);
+ /* We don't clear a level sensitive interrupt here */
+ if (!(s->elcr & (1 << irq)))
+ s->irr &= ~(1 << irq);
}
int cpu_get_pic_interrupt(CPUState *env)