aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162>2007-01-02 19:33:15 +0000
committerpbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162>2007-01-02 19:33:15 +0000
commitdf628ff14eeb825eafbf820ea71b09b8d9434029 (patch)
treedbf3ebebeb3f323fd2ba6099d849a193886f864d
parent240f24e01372201d44115e945edb39d91a6cc1be (diff)
Arm GIC stuck interrupt fix.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2286 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--hw/arm_gic.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/hw/arm_gic.c b/hw/arm_gic.c
index 94ce9aa340..2901f3466e 100644
--- a/hw/arm_gic.c
+++ b/hw/arm_gic.c
@@ -17,7 +17,7 @@
#ifdef DEBUG_GIC
#define DPRINTF(fmt, args...) \
-do { printf("arm_gic: " fmt , (int)s->base, ##args); } while (0)
+do { printf("arm_gic: " fmt , ##args); } while (0)
#else
#define DPRINTF(fmt, args...) do {} while(0)
#endif
@@ -135,7 +135,10 @@ static void gic_set_irq(void *opaque, int irq, int level)
static void gic_set_running_irq(gic_state *s, int irq)
{
s->running_irq = irq;
- s->running_priority = s->priority[irq];
+ if (irq == 1023)
+ s->running_priority = 0x100;
+ else
+ s->running_priority = s->priority[irq];
gic_update(s);
}
@@ -160,7 +163,7 @@ static uint32_t gic_acknowledge_irq(gic_state *s)
static void gic_complete_irq(gic_state * s, int irq)
{
int update = 0;
- DPRINTF("EIO %d\n", irq);
+ DPRINTF("EOI %d\n", irq);
if (s->running_irq == 1023)
return; /* No active IRQ. */
if (irq != 1023) {