Revision b4511723 hw/apic.c
b/hw/apic.c | ||
---|---|---|
382 | 382 |
{ |
383 | 383 |
int i; |
384 | 384 |
|
385 |
for(i = 0; i < APIC_LVT_NB; i++) |
|
386 |
s->lvt[i] = 1 << 16; /* mask LVT */ |
|
387 | 385 |
s->tpr = 0; |
388 | 386 |
s->spurious_vec = 0xff; |
389 | 387 |
s->log_dest = 0; |
... | ... | |
391 | 389 |
memset(s->isr, 0, sizeof(s->isr)); |
392 | 390 |
memset(s->tmr, 0, sizeof(s->tmr)); |
393 | 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 | 394 |
s->esr = 0; |
396 | 395 |
memset(s->icr, 0, sizeof(s->icr)); |
397 | 396 |
s->divide_conf = 0; |
... | ... | |
477 | 476 |
intno = get_highest_priority_int(s->irr); |
478 | 477 |
if (intno < 0) |
479 | 478 |
return -1; |
480 |
reset_bit(s->irr, intno); |
|
481 | 479 |
if (s->tpr && intno <= s->tpr) |
482 | 480 |
return s->spurious_vec & 0xff; |
481 |
reset_bit(s->irr, intno); |
|
483 | 482 |
set_bit(s->isr, intno); |
484 | 483 |
apic_update_irq(s); |
485 | 484 |
return intno; |
Also available in: Unified diff