Date: Fri, 9 Mar 2001 00:43:19 -0800 (PST) From: Matthew Jacob <mjacob@feral.com> To: Yoriaki FUJIMORI <fujimori@baron.fujimori.cache.waseda.ac.jp> Cc: freebsd-alpha@freebsd.org, Jordan Hubbard <jkh@bsdi.com> Subject: realtime clock problem solved Message-ID: <Pine.BSF.4.21.0103090040070.4175-100000@beppo.feral.com> In-Reply-To: <200103051823.f25INdT38459@baron.fujimori.cache.waseda.ac.jp>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 5 Mar 2001, Yoriaki FUJIMORI wrote: > > As for a realtime clock problem, it should persist on many alphapc164, > pc164lx and up1100. At least in my lab, they all suffer from this. > It was a fun to see `Feb 29, 2000' on all of them. (;_;) > > I guess FreeBSD/Alpha alone makes use of mcclock.c. I could not find > its counterpart in FreeBSD/i386. > > Yoriaki Fujimori > I think I have a fix for this- it fixed my problem. The problem here is that the clock register was being written with a > 2 digit value. The below patch could be simpler in that just the update of the regs value should come after the rolloff to 2 digits. Could you try this for your machines? Jordan? If this pans out is this still possible to get into 4.3? Index: sys/dev/dec/mcclock.c =================================================================== RCS file: /home/ncvs/src/sys/dev/dec/mcclock.c,v retrieving revision 1.5 diff -u -r1.5 mcclock.c --- sys/dev/dec/mcclock.c 2000/01/04 03:22:04 1.5 +++ sys/dev/dec/mcclock.c 2001/03/09 08:39:19 @@ -84,10 +84,7 @@ ct->day = regs[MC_DOM]; ct->mon = regs[MC_MONTH]; ct->year = regs[MC_YEAR]; - /* - * This chip is not y2k compliant, so we'll do a 10 year window fix. - */ - if (ct->year >= 0 && ct->year < 10) { + if (ct->year < 70) { ct->year += 100; } } @@ -111,15 +108,7 @@ regs[MC_DOW] = ct->dow; regs[MC_DOM] = ct->day; regs[MC_MONTH] = ct->mon; - regs[MC_YEAR] = ct->year; - /* - * This chip is not y2k compliant, so we'll do a 10 year window fix. - * It's probably okay to write more than 100, but let's not and - * and say we didn't. - */ - if (ct->year >= 100) { - ct->year -= 100; - } + regs[MC_YEAR] = ct->year % 100; s = splclock(); MC146818_PUTTOD(dev, ®s); splx(s); To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-alpha" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0103090040070.4175-100000>