diff options
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/x86/interrupts.cc | 13 | ||||
-rw-r--r-- | src/arch/x86/interrupts.hh | 5 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/arch/x86/interrupts.cc b/src/arch/x86/interrupts.cc index dc4193f36..88d200b80 100644 --- a/src/arch/x86/interrupts.cc +++ b/src/arch/x86/interrupts.cc @@ -59,6 +59,9 @@ #include "arch/x86/interrupts.hh" #include "arch/x86/intmessage.hh" #include "cpu/base.hh" +#include "dev/x86/i82094aa.hh" +#include "dev/x86/pc.hh" +#include "dev/x86/south_bridge.hh" #include "mem/packet_access.hh" #include "sim/system.hh" @@ -306,6 +309,16 @@ X86ISA::Interrupts::setCPU(BaseCPU * newCPU) } +void +X86ISA::Interrupts::init() +{ + BasicPioDevice::init(); + Pc * pc = dynamic_cast<Pc *>(platform); + assert(pc); + pc->southBridge->ioApic->registerLocalApic(initialApicId, this); +} + + Tick X86ISA::Interrupts::recvMessage(PacketPtr pkt) { diff --git a/src/arch/x86/interrupts.hh b/src/arch/x86/interrupts.hh index 33fafd941..e1bd676db 100644 --- a/src/arch/x86/interrupts.hh +++ b/src/arch/x86/interrupts.hh @@ -214,6 +214,11 @@ class Interrupts : public BasicPioDevice, IntDev } /* + * Initialize this object by registering it with the IO APIC. + */ + void init(); + + /* * Functions to interact with the interrupt port from IntDev. */ Tick read(PacketPtr pkt); |