X86: Mask the PIC at startup to avoid a glitch which causes an NMI.
This commit is contained in:
@@ -39,8 +39,6 @@
|
||||
namespace X86ISA
|
||||
{
|
||||
|
||||
class I82094AA;
|
||||
|
||||
class I8259 : public BasicPioDevice, public IntDev
|
||||
{
|
||||
protected:
|
||||
@@ -94,6 +92,18 @@ class I8259 : public BasicPioDevice, public IntDev
|
||||
Tick read(PacketPtr pkt);
|
||||
Tick write(PacketPtr pkt);
|
||||
|
||||
void
|
||||
maskAll()
|
||||
{
|
||||
IMR = 0xFF;
|
||||
}
|
||||
|
||||
void
|
||||
unmaskAll()
|
||||
{
|
||||
IMR = 0x00;
|
||||
}
|
||||
|
||||
void signalInterrupt(int line);
|
||||
void raiseInterruptPin(int number);
|
||||
void lowerInterruptPin(int number);
|
||||
|
||||
@@ -107,6 +107,13 @@ Pc::init()
|
||||
entry.vector = 0x30;
|
||||
ioApic.writeReg(0x30, entry.bottomDW);
|
||||
ioApic.writeReg(0x31, entry.topDW);
|
||||
|
||||
/*
|
||||
* Mask the PICs. I'm presuming the BIOS/bootloader would have cleared
|
||||
* these out and masked them before passing control to the OS.
|
||||
*/
|
||||
southBridge->pic1->maskAll();
|
||||
southBridge->pic2->maskAll();
|
||||
}
|
||||
|
||||
Tick
|
||||
|
||||
Reference in New Issue
Block a user