diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-06-21 02:46:14 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-06-21 02:46:14 +0200 |
commit | 19bf2bbfeb9905728ae259680793fc9fb65d69cf (patch) | |
tree | 8e0a82f94646b093317cc66f73999ad30a2d887e /sys/src | |
parent | 17da3e3ff418849d2176a2f1ea6ef8bdbea0fa4c (diff) |
reverting guesscpuhz() changes, causes trouble
Diffstat (limited to 'sys/src')
-rw-r--r-- | sys/src/9/pc/archacpi.c | 2 | ||||
-rw-r--r-- | sys/src/9/pc/archmp.c | 3 | ||||
-rw-r--r-- | sys/src/9/pc/i8253.c | 28 |
3 files changed, 14 insertions, 19 deletions
diff --git a/sys/src/9/pc/archacpi.c b/sys/src/9/pc/archacpi.c index 298709847..24b3245bc 100644 --- a/sys/src/9/pc/archacpi.c +++ b/sys/src/9/pc/archacpi.c @@ -519,5 +519,7 @@ identify(void) return 1; if((cp = getconf("*nomp")) != nil && strcmp(cp, "0") != 0) return 1; + if(m->havetsc) + archacpi.fastclock = tscticks; return 0; } diff --git a/sys/src/9/pc/archmp.c b/sys/src/9/pc/archmp.c index 354249f38..23cf4fa66 100644 --- a/sys/src/9/pc/archmp.c +++ b/sys/src/9/pc/archmp.c @@ -395,5 +395,8 @@ identify(void) return 1; } + if(m->havetsc) + archmp.fastclock = tscticks; + return 0; } diff --git a/sys/src/9/pc/i8253.c b/sys/src/9/pc/i8253.c index 46e59f5c4..1ae22615f 100644 --- a/sys/src/9/pc/i8253.c +++ b/sys/src/9/pc/i8253.c @@ -145,10 +145,12 @@ guesscpuhz(int aalcycles) * */ outb(Tmode, Latch2); + cycles(&a); x = inb(T2cntr); x |= inb(T2cntr)<<8; aamloop(loops); outb(Tmode, Latch2); + cycles(&b); y = inb(T2cntr); y |= inb(T2cntr)<<8; @@ -172,25 +174,13 @@ guesscpuhz(int aalcycles) cpufreq = (vlong)loops*((aalcycles*2*Freq)/x); m->loopconst = (cpufreq/1000)/aalcycles; /* AAM+LOOP's for 1 ms */ - if(m->havetsc){ - aamloop(loops); /* warm up */ - cycles(&a); - aamloop(loops); - cycles(&b); - - aamloop(loops); - cycles(&a); - aamloop(loops); - cycles(&b); - - /* a == b means virtualbox has confused us */ - if(b > a){ - b -= a; - b *= 2*Freq; - b /= x; - m->cyclefreq = b; - cpufreq = b; - } + /* a == b means virtualbox has confused us */ + if(m->havetsc && b > a){ + b -= a; + b *= 2*Freq; + b /= x; + m->cyclefreq = b; + cpufreq = b; } m->cpuhz = cpufreq; |