From a2599e4fc1272e4c1fdf5cff90da88653579b62f Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Sat, 11 Oct 2008 15:15:34 -0700 Subject: X86: Set up a mechanism for the I8254 timer to cause interrupts. --- src/dev/x86/i8254.hh | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'src/dev/x86/i8254.hh') diff --git a/src/dev/x86/i8254.hh b/src/dev/x86/i8254.hh index 9528013c8..e6860b2c4 100644 --- a/src/dev/x86/i8254.hh +++ b/src/dev/x86/i8254.hh @@ -44,9 +44,29 @@ class I8254 : public BasicPioDevice { protected: Tick latency; - Intel8254Timer pit; + class X86Intel8254Timer : public Intel8254Timer + { + protected: + I8254 * parent; + + void + counterInterrupt(unsigned int num) + { + parent->counterInterrupt(num); + } + + public: + X86Intel8254Timer(const std::string &name, I8254 * _parent) : + Intel8254Timer(_parent, name), parent(_parent) + {} + }; + + + X86Intel8254Timer pit; IntPin *intPin; + + void counterInterrupt(unsigned int num); public: typedef I8254Params Params; @@ -58,7 +78,7 @@ class I8254 : public BasicPioDevice } I8254(Params *p) : BasicPioDevice(p), latency(p->pio_latency), - pit(this, p->name), intPin(p->int_pin) + pit(p->name, this), intPin(p->int_pin) { pioSize = 4; } -- cgit v1.2.3