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
This commit is contained in:
parent
d1beab8220
commit
b4511723bd
|
@ -382,8 +382,6 @@ static void apic_init_ipi(APICState *s)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for(i = 0; i < APIC_LVT_NB; i++)
|
|
||||||
s->lvt[i] = 1 << 16; /* mask LVT */
|
|
||||||
s->tpr = 0;
|
s->tpr = 0;
|
||||||
s->spurious_vec = 0xff;
|
s->spurious_vec = 0xff;
|
||||||
s->log_dest = 0;
|
s->log_dest = 0;
|
||||||
|
@ -391,7 +389,8 @@ static void apic_init_ipi(APICState *s)
|
||||||
memset(s->isr, 0, sizeof(s->isr));
|
memset(s->isr, 0, sizeof(s->isr));
|
||||||
memset(s->tmr, 0, sizeof(s->tmr));
|
memset(s->tmr, 0, sizeof(s->tmr));
|
||||||
memset(s->irr, 0, sizeof(s->irr));
|
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;
|
s->esr = 0;
|
||||||
memset(s->icr, 0, sizeof(s->icr));
|
memset(s->icr, 0, sizeof(s->icr));
|
||||||
s->divide_conf = 0;
|
s->divide_conf = 0;
|
||||||
|
@ -477,9 +476,9 @@ int apic_get_interrupt(CPUState *env)
|
||||||
intno = get_highest_priority_int(s->irr);
|
intno = get_highest_priority_int(s->irr);
|
||||||
if (intno < 0)
|
if (intno < 0)
|
||||||
return -1;
|
return -1;
|
||||||
reset_bit(s->irr, intno);
|
|
||||||
if (s->tpr && intno <= s->tpr)
|
if (s->tpr && intno <= s->tpr)
|
||||||
return s->spurious_vec & 0xff;
|
return s->spurious_vec & 0xff;
|
||||||
|
reset_bit(s->irr, intno);
|
||||||
set_bit(s->isr, intno);
|
set_bit(s->isr, intno);
|
||||||
apic_update_irq(s);
|
apic_update_irq(s);
|
||||||
return intno;
|
return intno;
|
||||||
|
|
Loading…
Reference in New Issue