Commit df628ff14eeb825eafbf820ea71b09b8d9434029

Authored by pbrook
1 parent 240f24e0

Arm GIC stuck interrupt fix.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2286 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 6 additions and 3 deletions
hw/arm_gic.c
@@ -17,7 +17,7 @@ @@ -17,7 +17,7 @@
17 17
18 #ifdef DEBUG_GIC 18 #ifdef DEBUG_GIC
19 #define DPRINTF(fmt, args...) \ 19 #define DPRINTF(fmt, args...) \
20 -do { printf("arm_gic: " fmt , (int)s->base, ##args); } while (0) 20 +do { printf("arm_gic: " fmt , ##args); } while (0)
21 #else 21 #else
22 #define DPRINTF(fmt, args...) do {} while(0) 22 #define DPRINTF(fmt, args...) do {} while(0)
23 #endif 23 #endif
@@ -135,7 +135,10 @@ static void gic_set_irq(void *opaque, int irq, int level) @@ -135,7 +135,10 @@ static void gic_set_irq(void *opaque, int irq, int level)
135 static void gic_set_running_irq(gic_state *s, int irq) 135 static void gic_set_running_irq(gic_state *s, int irq)
136 { 136 {
137 s->running_irq = irq; 137 s->running_irq = irq;
138 - s->running_priority = s->priority[irq]; 138 + if (irq == 1023)
  139 + s->running_priority = 0x100;
  140 + else
  141 + s->running_priority = s->priority[irq];
139 gic_update(s); 142 gic_update(s);
140 } 143 }
141 144
@@ -160,7 +163,7 @@ static uint32_t gic_acknowledge_irq(gic_state *s) @@ -160,7 +163,7 @@ static uint32_t gic_acknowledge_irq(gic_state *s)
160 static void gic_complete_irq(gic_state * s, int irq) 163 static void gic_complete_irq(gic_state * s, int irq)
161 { 164 {
162 int update = 0; 165 int update = 0;
163 - DPRINTF("EIO %d\n", irq); 166 + DPRINTF("EOI %d\n", irq);
164 if (s->running_irq == 1023) 167 if (s->running_irq == 1023)
165 return; /* No active IRQ. */ 168 return; /* No active IRQ. */
166 if (irq != 1023) { 169 if (irq != 1023) {