Return to BSD News archive
Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!bunyip.cc.uq.oz.au!munnari.oz.au!spool.mu.edu!uwm.edu!lll-winken.llnl.gov!decwrl!olivea!grapevine.lcs.mit.edu!ginger.lcs.mit.edu!wollman From: wollman@ginger.lcs.mit.edu (Garrett A. Wollman) Newsgroups: comp.os.386bsd.bugs Subject: Re: FreeBSD 2.0 Date: 19 Dec 1994 18:24:59 GMT Organization: MIT Laboratory for Computer Science Lines: 41 Message-ID: <3d4j5r$5dn@GRAPEVINE.LCS.MIT.EDU> References: <3cqt3e$3jl@ddi2.digital.net> NNTP-Posting-Host: ginger.lcs.mit.edu In article <3cqt3e$3jl@ddi2.digital.net>, Eblan Farris <efarris@digital.net> wrote: >Why does FreeBSD 2.0 report my Pentium 90's speed rating low. > >When I boot up the FreeBSD 2.0 messages report speeds of anywhere >between 75 and 85 MHz. > >Any info would be appreciated - especially if anyone knows exactly >where FreeBSD is getting the info to report - or how does it >calculate it. FreeBSD reads the Pentium cycle-counter register, waits for a second, and reads it again, then divides the difference by a million to determine the speed in MHz. The code to do this is in /sys/i386/isa/clock.c (the appropriateness of the location is debatable), in the function calibrate_cyclecounter(). This code has a bug in it (which I think was introduced while trying to work around a faulty version of gcc): cycles_per_sec = (long long)edx + eax; cycles_per_sec -= (long long)lastedx + lasteax; which should say: cycles_per_sec = (long long)edx << 32 + eax; cycles_per_sec -= (long long)lastedx << 32 + lasteax; Try this and let me know if it fixes things. Another possibility may be that the DELAY routine is somehow calibrated incorrectly for your hardware, or you have a really, really bad oscillator in your machine. -GAWollman -- Garrett A. Wollman | Shashish is simple, it's discreet, it's brief. ... wollman@lcs.mit.edu | Shashish is the bonding of hearts in spite of distance. Opinions not those of| It is a bond more powerful than absence. We like people MIT, LCS, ANA, or NSA| who like Shashish. - Claude McKenzie + Florent Vollant