X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fdev%2Falpha%2Ftsunami_io.cc;h=6586cd9809fcf920462003d7396392819f9dcb08;hb=ad3f75dc81efc8818786c32d6190e3ed069b9fc6;hp=fa4e697cf5169e4200aa863cd34bb02a608ebe2e;hpb=2b4874449ce45504a1759c593a1f9b00983fca01;p=gem5.git diff --git a/src/dev/alpha/tsunami_io.cc b/src/dev/alpha/tsunami_io.cc index fa4e697cf..6586cd980 100644 --- a/src/dev/alpha/tsunami_io.cc +++ b/src/dev/alpha/tsunami_io.cc @@ -42,31 +42,36 @@ #include "base/time.hh" #include "base/trace.hh" -#include "dev/rtcreg.h" -#include "dev/alpha/tsunami_cchip.hh" +#include "config/the_isa.hh" +#include "debug/Tsunami.hh" #include "dev/alpha/tsunami.hh" +#include "dev/alpha/tsunami_cchip.hh" #include "dev/alpha/tsunami_io.hh" #include "dev/alpha/tsunamireg.h" +#include "dev/rtcreg.h" #include "mem/packet.hh" #include "mem/packet_access.hh" #include "mem/port.hh" #include "sim/system.hh" -using namespace std; +// clang complains about std::set being overloaded with Packet::set if +// we open up the entire namespace std +using std::string; +using std::ostream; + //Should this be AlphaISA? using namespace TheISA; -TsunamiIO::TsunamiRTC::TsunamiRTC(const string &n, const TsunamiIOParams *p) : - MC146818(n, p->time, p->year_is_bcd, p->frequency), tsunami(p->tsunami) +TsunamiIO::RTC::RTC(const string &n, const TsunamiIOParams *p) + : MC146818(p->tsunami, n, p->time, p->year_is_bcd, p->frequency), + tsunami(p->tsunami) { } TsunamiIO::TsunamiIO(const Params *p) - : BasicPioDevice(p), tsunami(p->tsunami), pitimer(p->name + "pitimer"), - rtc(p->name + ".rtc", p) + : BasicPioDevice(p, 0x100), tsunami(p->tsunami), + pitimer(this, p->name + "pitimer"), rtc(p->name + ".rtc", p) { - pioSize = 0x100; - // set the back pointer from tsunami to myself tsunami->io = this; @@ -78,7 +83,7 @@ TsunamiIO::TsunamiIO(const Params *p) Tick TsunamiIO::frequency() const { - return Clock::Frequency / params()->frequency; + return SimClock::Frequency / params()->frequency; } Tick @@ -113,19 +118,19 @@ TsunamiIO::read(PacketPtr pkt) pkt->set(0x00); break; case TSDEV_TMR0_DATA: - pkt->set(pitimer.counter0.read()); + pkt->set(pitimer.readCounter(0)); break; case TSDEV_TMR1_DATA: - pkt->set(pitimer.counter1.read()); + pkt->set(pitimer.readCounter(1)); break; case TSDEV_TMR2_DATA: - pkt->set(pitimer.counter2.read()); + pkt->set(pitimer.readCounter(2)); break; case TSDEV_RTC_DATA: pkt->set(rtc.readData(rtcAddr)); break; case TSDEV_CTRL_PORTB: - if (pitimer.counter2.outputHigh()) + if (pitimer.outputHigh(2)) pkt->set(PORTB_SPKR_HIGH); else pkt->set(0x00); @@ -188,13 +193,13 @@ TsunamiIO::write(PacketPtr pkt) mode2 = pkt->get(); break; case TSDEV_TMR0_DATA: - pitimer.counter0.write(pkt->get()); + pitimer.writeCounter(0, pkt->get()); break; case TSDEV_TMR1_DATA: - pitimer.counter1.write(pkt->get()); + pitimer.writeCounter(1, pkt->get()); break; case TSDEV_TMR2_DATA: - pitimer.counter2.write(pkt->get()); + pitimer.writeCounter(2, pkt->get()); break; case TSDEV_TMR_CTRL: pitimer.writeControl(pkt->get());