43d42
< #include "base/time.hh"
53a53
> #include "sim/builder.hh"
60,62c60,62
< TsunamiIO::RTC::RTC(const string &n, Tsunami* tsunami,
< const TsunamiIO::Params *p)
< : _name(n), event(tsunami, p->frequency), addr(0)
---
> TsunamiIO::RTC::RTC(const string &n, Tsunami* tsunami, const vector<int> &t,
> bool bcd, Tick i)
> : _name(n), event(tsunami, i), addr(0), year_is_bcd(bcd)
68c68,69
< year = p->time.tm_year;
---
> struct tm tm;
> parseTime(t, &tm);
70c71,73
< if (p->year_is_bcd) {
---
> year = tm.tm_year;
>
> if (year_is_bcd) {
81,85c84,88
< mon = p->time.tm_mon + 1;
< mday = p->time.tm_mday;
< hour = p->time.tm_hour;
< min = p->time.tm_min;
< sec = p->time.tm_sec;
---
> mon = tm.tm_mon + 1;
> mday = tm.tm_mday;
> hour = tm.tm_hour;
> min = tm.tm_min;
> sec = tm.tm_sec;
88c91
< wday = p->time.tm_wday + 1;
---
> wday = tm.tm_wday + 1;
90c93
< DPRINTFN("Real-time clock set to %s", asctime(&p->time));
---
> DPRINTFN("Real-time clock set to %s", asctime(&tm));
437c440
< TsunamiIO::TsunamiIO(const Params *p)
---
> TsunamiIO::TsunamiIO(Params *p)
439c442,443
< rtc(p->name + ".rtc", p->tsunami, p)
---
> rtc(p->name + ".rtc", p->tsunami, p->init_time, p->year_is_bcd,
> p->frequency)
460d463
< assert(pkt->result == Packet::Unknown);
519c522
< pkt->result = Packet::Success;
---
> pkt->makeAtomicResponse();
526d528
< assert(pkt->result == Packet::Unknown);
599c601
< pkt->result = Packet::Success;
---
> pkt->makeAtomicResponse();
657,658c659,685
< TsunamiIO *
< TsunamiIOParams::create()
---
> BEGIN_DECLARE_SIM_OBJECT_PARAMS(TsunamiIO)
>
> Param<Addr> pio_addr;
> Param<Tick> pio_latency;
> Param<Tick> frequency;
> SimObjectParam<Platform *> platform;
> SimObjectParam<System *> system;
> VectorParam<int> time;
> Param<bool> year_is_bcd;
> SimObjectParam<Tsunami *> tsunami;
>
> END_DECLARE_SIM_OBJECT_PARAMS(TsunamiIO)
>
> BEGIN_INIT_SIM_OBJECT_PARAMS(TsunamiIO)
>
> INIT_PARAM(pio_addr, "Device Address"),
> INIT_PARAM(pio_latency, "Programmed IO latency"),
> INIT_PARAM(frequency, "clock interrupt frequency"),
> INIT_PARAM(platform, "platform"),
> INIT_PARAM(system, "system object"),
> INIT_PARAM(time, "System time to use (0 for actual time"),
> INIT_PARAM(year_is_bcd, ""),
> INIT_PARAM(tsunami, "Tsunami")
>
> END_INIT_SIM_OBJECT_PARAMS(TsunamiIO)
>
> CREATE_SIM_OBJECT(TsunamiIO)
660c687,697
< return new TsunamiIO(this);
---
> TsunamiIO::Params *p = new TsunamiIO::Params;
> p->frequency = frequency;
> p->name = getInstanceName();
> p->pio_addr = pio_addr;
> p->pio_delay = pio_latency;
> p->platform = platform;
> p->system = system;
> p->init_time = time;
> p->year_is_bcd = year_is_bcd;
> p->tsunami = tsunami;
> return new TsunamiIO(p);
661a699,700
>
> REGISTER_SIM_OBJECT("TsunamiIO", TsunamiIO)