The updated disk image FINALLY finished uploading if you want to use it to check RTC changes.
Gabe Gabe Black wrote: > changeset 835a99bdab10 in /z/repo/m5 > details: http://repo.m5sim.org/m5?cmd=changeset;node=835a99bdab10 > description: > RTC: Make calls to writeData update the RTCs internal representation of > time. > > diffstat: > > 1 file changed, 18 insertions(+), 2 deletions(-) > src/dev/mc146818.cc | 20 ++++++++++++++++++-- > > diffs (38 lines): > > diff -r ade9a088bb14 -r 835a99bdab10 src/dev/mc146818.cc > --- a/src/dev/mc146818.cc Thu Aug 20 00:42:43 2009 -0700 > +++ b/src/dev/mc146818.cc Thu Aug 20 23:09:03 2009 -0700 > @@ -52,6 +52,15 @@ > return result; > } > > +static uint8_t > +unbcdize(uint8_t val) > +{ > + uint8_t result; > + result = val & 0xf; > + result += (val >> 4) * 10; > + return result; > +} > + > void > MC146818::setTime(const struct tm time) > { > @@ -101,9 +110,16 @@ > void > MC146818::writeData(const uint8_t addr, const uint8_t data) > { > - if (addr < RTC_STAT_REGA) > + if (addr < RTC_STAT_REGA) { > clock_data[addr] = data; > - else { > + curTime.tm_sec = unbcdize(sec); > + curTime.tm_min = unbcdize(min); > + curTime.tm_hour = unbcdize(hour); > + curTime.tm_mday = unbcdize(mday); > + curTime.tm_mon = unbcdize(mon) - 1; > + curTime.tm_year = ((unbcdize(year) + 50) % 100) + 1950; > + curTime.tm_wday = unbcdize(wday) - 1; > + } else { > switch (addr) { > case RTC_STAT_REGA: > // The "update in progress" bit is read only. > _______________________________________________ > m5-dev mailing list > [email protected] > http://m5sim.org/mailman/listinfo/m5-dev > _______________________________________________ m5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/m5-dev
