diff options
author | Ron Dreslinski <rdreslin@umich.edu> | 2004-01-23 13:01:32 -0500 |
---|---|---|
committer | Ron Dreslinski <rdreslin@umich.edu> | 2004-01-23 13:01:32 -0500 |
commit | 9b397ce7f45fc275f9004d78520628e2e7c0dd16 (patch) | |
tree | 3d6a704a2eb3b859d2b6fa5fc89b9d3ebbb25955 /dev | |
parent | f9f4a7498611082079ae4acd2d421a857cab30d8 (diff) | |
download | gem5-9b397ce7f45fc275f9004d78520628e2e7c0dd16.tar.xz |
Add RTC event for uip bit
dev/tsunami_io.cc:
Add RTC event to change the state of a uip bit
dev/tsunami_io.hh:
Add RTC event to change state of an uip bit
--HG--
extra : convert_revision : acde7bdfe152d3e08f7ed53b4c8e910378f6ae67
Diffstat (limited to 'dev')
-rw-r--r-- | dev/tsunami_io.cc | 32 | ||||
-rw-r--r-- | dev/tsunami_io.hh | 13 |
2 files changed, 45 insertions, 0 deletions
diff --git a/dev/tsunami_io.cc b/dev/tsunami_io.cc index eb0b9ae91..537e40a22 100644 --- a/dev/tsunami_io.cc +++ b/dev/tsunami_io.cc @@ -22,6 +22,38 @@ #include "sim/system.hh" using namespace std; +TsunamiIO::RTCEvent::RTCEvent() + : Event(&mainEventQueue) +{ + DPRINTF(Tsunami, "RTC Event Initilizing\n"); + rtc_uip = 0; + schedule(curTick + (curTick % ticksPerSecond)); +} + +void +TsunamiIO::RTCEvent::process() +{ + DPRINTF(Tsunami, "Timer Interrupt\n"); + if (rtc_uip == 0) { + rtc_uip = 1; //Signal a second has occured + schedule(curTick + (curTick % ticksPerSecond) - 10); + } + else + rtc_uip = 0; //Done signaling second has occured + schedule(curTick + (curTick % ticksPerSecond)); +} + +const char * +TsunamiIO::RTCEvent::description() +{ + return "tsunami RTC changte second"; +} + +uint8_t +TsunamiIO::RTCEvent::rtc_uip_value() +{ + return rtc_uip; +} TsunamiIO::ClockEvent::ClockEvent() : Event(&mainEventQueue) diff --git a/dev/tsunami_io.hh b/dev/tsunami_io.hh index 1336a703e..4e342523f 100644 --- a/dev/tsunami_io.hh +++ b/dev/tsunami_io.hh @@ -64,6 +64,19 @@ class TsunamiIO : public MmapDevice }; + class RTCEvent : public Event + { + protected: + Tick interval; + uint8_t rtc_uip; + + public: + RTCEvent(); + + virtual void process(); + virtual const char *description(); + uint8_t rtc_uip_value(); + }; uint8_t mask1; uint8_t mask2; |