mirror of https://github.com/xemu-project/xemu.git
[Core Change] Fix PIC interrupt delivery by unmasking LINT0 in APIC for BSP
This commit is contained in:
parent
6338bfae98
commit
410702189f
|
@ -257,6 +257,27 @@ static void apic_reset_common(DeviceState *dev)
|
||||||
info->vapic_base_update(s);
|
info->vapic_base_update(s);
|
||||||
|
|
||||||
apic_init_reset(dev);
|
apic_init_reset(dev);
|
||||||
|
|
||||||
|
#ifdef XBOX
|
||||||
|
/* XBOX
|
||||||
|
* The following code was removed in b8eb551 stating:
|
||||||
|
*
|
||||||
|
* Due to old Seabios bug, QEMU reenable LINT0 after reset. This bug
|
||||||
|
* is long gone and therefore this hack is no longer needed. Since it
|
||||||
|
* violates the specifications, it is removed.
|
||||||
|
*
|
||||||
|
* However, Xbox kernels will *not* unmask LINT0, causing PIC interrupt
|
||||||
|
* delivery failure. So bring this code back for Xbox compat.
|
||||||
|
*/
|
||||||
|
if (bsp) {
|
||||||
|
/*
|
||||||
|
* LINT0 delivery mode on CPU #0 is set to ExtInt at initialization
|
||||||
|
* time typically by BIOS, so PIC interrupt can be delivered to the
|
||||||
|
* processor when local APIC is enabled.
|
||||||
|
*/
|
||||||
|
s->lvt[APIC_LVT_LINT0] = 0x700;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This function is only used for old state version 1 and 2 */
|
/* This function is only used for old state version 1 and 2 */
|
||||||
|
|
Loading…
Reference in New Issue