From: bellard Date: Sun, 8 Oct 2006 18:20:51 +0000 (+0000) Subject: APIC init fix + APIC get_irq fix (Juergen Keil) X-Git-Tag: release_0_9_0-iwjtag~208 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=2cac236e7a455a391e511679c085a5004f7f6996;p=qemu-xen-3.4-testing.git APIC init fix + APIC get_irq fix (Juergen Keil) --- diff --git a/hw/apic.c b/hw/apic.c index aa6f2ef3..6e667394 100644 --- a/hw/apic.c +++ b/hw/apic.c @@ -382,8 +382,6 @@ static void apic_init_ipi(APICState *s) { int i; - for(i = 0; i < APIC_LVT_NB; i++) - s->lvt[i] = 1 << 16; /* mask LVT */ s->tpr = 0; s->spurious_vec = 0xff; s->log_dest = 0; @@ -391,7 +389,8 @@ static void apic_init_ipi(APICState *s) memset(s->isr, 0, sizeof(s->isr)); memset(s->tmr, 0, sizeof(s->tmr)); memset(s->irr, 0, sizeof(s->irr)); - memset(s->lvt, 0, sizeof(s->lvt)); + for(i = 0; i < APIC_LVT_NB; i++) + s->lvt[i] = 1 << 16; /* mask LVT */ s->esr = 0; memset(s->icr, 0, sizeof(s->icr)); s->divide_conf = 0; @@ -477,9 +476,9 @@ int apic_get_interrupt(CPUState *env) intno = get_highest_priority_int(s->irr); if (intno < 0) return -1; - reset_bit(s->irr, intno); if (s->tpr && intno <= s->tpr) return s->spurious_vec & 0xff; + reset_bit(s->irr, intno); set_bit(s->isr, intno); apic_update_irq(s); return intno;