Author: jkim Date: Tue Apr 12 23:49:07 2011 New Revision: 220584 URL: http://svn.freebsd.org/changeset/base/220584
Log: Reduce errors in effective frequency calculation. Modified: head/sys/amd64/amd64/machdep.c head/sys/i386/i386/machdep.c Modified: head/sys/amd64/amd64/machdep.c ============================================================================== --- head/sys/amd64/amd64/machdep.c Tue Apr 12 23:04:01 2011 (r220583) +++ head/sys/amd64/amd64/machdep.c Tue Apr 12 23:49:07 2011 (r220584) @@ -546,7 +546,7 @@ int cpu_est_clockrate(int cpu_id, uint64_t *rate) { uint64_t tsc1, tsc2; - uint64_t acnt, mcnt; + uint64_t acnt, mcnt, perf; register_t reg; if (pcpu_find(cpu_id) == NULL || rate == NULL) @@ -579,7 +579,8 @@ cpu_est_clockrate(int cpu_id, uint64_t * acnt = rdmsr(MSR_APERF); tsc2 = rdtsc(); intr_restore(reg); - *rate = (tsc2 - tsc1) / 1000 * acnt / mcnt * 1000000; + perf = 1000 * acnt / mcnt; + *rate = (tsc2 - tsc1) * perf; } else { tsc1 = rdtsc(); DELAY(1000); Modified: head/sys/i386/i386/machdep.c ============================================================================== --- head/sys/i386/i386/machdep.c Tue Apr 12 23:04:01 2011 (r220583) +++ head/sys/i386/i386/machdep.c Tue Apr 12 23:49:07 2011 (r220584) @@ -1137,7 +1137,7 @@ int cpu_est_clockrate(int cpu_id, uint64_t *rate) { uint64_t tsc1, tsc2; - uint64_t acnt, mcnt; + uint64_t acnt, mcnt, perf; register_t reg; if (pcpu_find(cpu_id) == NULL || rate == NULL) @@ -1172,7 +1172,8 @@ cpu_est_clockrate(int cpu_id, uint64_t * acnt = rdmsr(MSR_APERF); tsc2 = rdtsc(); intr_restore(reg); - *rate = (tsc2 - tsc1) / 1000 * acnt / mcnt * 1000000; + perf = 1000 * acnt / mcnt; + *rate = (tsc2 - tsc1) * perf; } else { tsc1 = rdtsc(); DELAY(1000); _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"