summaryrefslogtreecommitdiff
path: root/src/dev/intel_8254_timer.hh
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2008-10-11 15:15:34 -0700
committerGabe Black <gblack@eecs.umich.edu>2008-10-11 15:15:34 -0700
commita2599e4fc1272e4c1fdf5cff90da88653579b62f (patch)
tree6ed886dbd3ccd1608b3f6fdbc37db266511d5f47 /src/dev/intel_8254_timer.hh
parent526933e5d03f5d7963bc5a244294ddbb068c4770 (diff)
downloadgem5-a2599e4fc1272e4c1fdf5cff90da88653579b62f.tar.xz
X86: Set up a mechanism for the I8254 timer to cause interrupts.
Diffstat (limited to 'src/dev/intel_8254_timer.hh')
-rw-r--r--src/dev/intel_8254_timer.hh16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/dev/intel_8254_timer.hh b/src/dev/intel_8254_timer.hh
index 9391b0f9e..bb650d33b 100644
--- a/src/dev/intel_8254_timer.hh
+++ b/src/dev/intel_8254_timer.hh
@@ -90,7 +90,7 @@ class Intel8254Timer : public EventManager
CounterEvent(Counter*);
/** Event process */
- virtual void process();
+ void process();
/** Event description */
virtual const char *description() const;
@@ -104,6 +104,8 @@ class Intel8254Timer : public EventManager
std::string _name;
const std::string &name() const { return _name; }
+ unsigned int num;
+
CounterEvent event;
/** Current count value */
@@ -134,7 +136,7 @@ class Intel8254Timer : public EventManager
Intel8254Timer *parent;
public:
- Counter(Intel8254Timer *p, const std::string &name);
+ Counter(Intel8254Timer *p, const std::string &name, unsigned int num);
/** Latch the current count (if one is not already latched) */
void latchCount();
@@ -181,8 +183,18 @@ class Intel8254Timer : public EventManager
/** PIT has three seperate counters */
Counter *counter[3];
+ virtual void
+ counterInterrupt(unsigned int num)
+ {
+ DPRINTF(Intel8254Timer, "Timer interrupt from counter %d.\n", num);
+ }
+
public:
+ virtual
+ ~Intel8254Timer()
+ {}
+
Intel8254Timer(EventManager *em, const std::string &name,
Counter *counter0, Counter *counter1, Counter *counter2);