summaryrefslogtreecommitdiff
path: root/src/dev/x86/i8259.hh
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2008-10-12 13:54:57 -0700
committerGabe Black <gblack@eecs.umich.edu>2008-10-12 13:54:57 -0700
commit3a1905157eec2ed80eaf2ddb8be69cb2f509dfee (patch)
tree036a4079a56b09dab9492bc926b426cb773ce604 /src/dev/x86/i8259.hh
parentc35da8e495e9f2697a252e8e828e6d7760a8a2db (diff)
downloadgem5-3a1905157eec2ed80eaf2ddb8be69cb2f509dfee.tar.xz
X86: Create a mechanism for the IO APIC to access I8259 vectors.
Diffstat (limited to 'src/dev/x86/i8259.hh')
-rw-r--r--src/dev/x86/i8259.hh17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/dev/x86/i8259.hh b/src/dev/x86/i8259.hh
index 107cd015c..371a27874 100644
--- a/src/dev/x86/i8259.hh
+++ b/src/dev/x86/i8259.hh
@@ -39,12 +39,17 @@
namespace X86ISA
{
+class I82094AA;
+
class I8259 : public BasicPioDevice, public IntDev
{
protected:
+ static const int NumLines = 8;
+
Tick latency;
IntPin *output;
Enums::X86I8259CascadeMode mode;
+ I8259 * slave;
// Interrupt Request Register
uint8_t IRR;
@@ -77,19 +82,19 @@ class I8259 : public BasicPioDevice, public IntDev
return dynamic_cast<const Params *>(_params);
}
- I8259(Params * p) : BasicPioDevice(p), IntDev(this),
- latency(p->pio_latency), output(p->output),
- mode(p->mode), IRR(0), ISR(0), IMR(0),
- vectorOffset(0), readIRR(true), initControlWord(0)
+ I8259(Params * p);
+
+ void
+ setSlave(I8259 * _slave)
{
- pioSize = 2;
+ slave = _slave;
}
Tick read(PacketPtr pkt);
-
Tick write(PacketPtr pkt);
void signalInterrupt(int line);
+ int getVector();
};
}; // namespace X86ISA