From df628ff14eeb825eafbf820ea71b09b8d9434029 Mon Sep 17 00:00:00 2001 From: pbrook Date: Tue, 2 Jan 2007 19:33:15 +0000 Subject: [PATCH] Arm GIC stuck interrupt fix. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2286 c046a42c-6fe2-441c-8c8c-71466251a162 --- hw/arm_gic.c | 9 ++++++--- 1 file 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) {