Commit b4511723bdc0ead9b9b958ad20a4a8bf900d6243

Authored by bellard
1 parent d1beab82

APIC init fix + APIC get_irq fix (Juergen Keil)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2193 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 3 additions and 4 deletions
hw/apic.c
@@ -382,8 +382,6 @@ static void apic_init_ipi(APICState *s) @@ -382,8 +382,6 @@ static void apic_init_ipi(APICState *s)
382 { 382 {
383 int i; 383 int i;
384 384
385 - for(i = 0; i < APIC_LVT_NB; i++)  
386 - s->lvt[i] = 1 << 16; /* mask LVT */  
387 s->tpr = 0; 385 s->tpr = 0;
388 s->spurious_vec = 0xff; 386 s->spurious_vec = 0xff;
389 s->log_dest = 0; 387 s->log_dest = 0;
@@ -391,7 +389,8 @@ static void apic_init_ipi(APICState *s) @@ -391,7 +389,8 @@ static void apic_init_ipi(APICState *s)
391 memset(s->isr, 0, sizeof(s->isr)); 389 memset(s->isr, 0, sizeof(s->isr));
392 memset(s->tmr, 0, sizeof(s->tmr)); 390 memset(s->tmr, 0, sizeof(s->tmr));
393 memset(s->irr, 0, sizeof(s->irr)); 391 memset(s->irr, 0, sizeof(s->irr));
394 - memset(s->lvt, 0, sizeof(s->lvt)); 392 + for(i = 0; i < APIC_LVT_NB; i++)
  393 + s->lvt[i] = 1 << 16; /* mask LVT */
395 s->esr = 0; 394 s->esr = 0;
396 memset(s->icr, 0, sizeof(s->icr)); 395 memset(s->icr, 0, sizeof(s->icr));
397 s->divide_conf = 0; 396 s->divide_conf = 0;
@@ -477,9 +476,9 @@ int apic_get_interrupt(CPUState *env) @@ -477,9 +476,9 @@ int apic_get_interrupt(CPUState *env)
477 intno = get_highest_priority_int(s->irr); 476 intno = get_highest_priority_int(s->irr);
478 if (intno < 0) 477 if (intno < 0)
479 return -1; 478 return -1;
480 - reset_bit(s->irr, intno);  
481 if (s->tpr && intno <= s->tpr) 479 if (s->tpr && intno <= s->tpr)
482 return s->spurious_vec & 0xff; 480 return s->spurious_vec & 0xff;
  481 + reset_bit(s->irr, intno);
483 set_bit(s->isr, intno); 482 set_bit(s->isr, intno);
484 apic_update_irq(s); 483 apic_update_irq(s);
485 return intno; 484 return intno;