Author: jkim
Date: Wed Dec  8 23:40:41 2010
New Revision: 216312
URL: http://svn.freebsd.org/changeset/base/216312

Log:
  Do not subtract 0.5% from estimated frequency if DELAY(9) is driven by TSC.
  Remove a confusing comment about converting to MHz as we never did.

Modified:
  head/sys/amd64/amd64/machdep.c
  head/sys/i386/i386/machdep.c
  head/sys/pc98/pc98/machdep.c

Modified: head/sys/amd64/amd64/machdep.c
==============================================================================
--- head/sys/amd64/amd64/machdep.c      Wed Dec  8 22:54:18 2010        
(r216311)
+++ head/sys/amd64/amd64/machdep.c      Wed Dec  8 23:40:41 2010        
(r216312)
@@ -563,13 +563,7 @@ cpu_est_clockrate(int cpu_id, uint64_t *
        thread_unlock(curthread);
 #endif
 
-       /*
-        * Calculate the difference in readings, convert to Mhz, and
-        * subtract 0.5% of the total.  Empirical testing has shown that
-        * overhead in DELAY() works out to approximately this value.
-        */
-       tsc2 -= tsc1;
-       *rate = tsc2 * 1000 - tsc2 * 5;
+       *rate = (tsc2 - tsc1) * 1000;
        return (0);
 }
 

Modified: head/sys/i386/i386/machdep.c
==============================================================================
--- head/sys/i386/i386/machdep.c        Wed Dec  8 22:54:18 2010        
(r216311)
+++ head/sys/i386/i386/machdep.c        Wed Dec  8 23:40:41 2010        
(r216312)
@@ -1157,12 +1157,16 @@ cpu_est_clockrate(int cpu_id, uint64_t *
        thread_unlock(curthread);
 #endif
 
+       tsc2 -= tsc1;
+       if (tsc_freq != 0 && !tsc_is_broken) {
+               *rate = tsc2 * 1000;
+               return (0);
+       }
+
        /*
-        * Calculate the difference in readings, convert to Mhz, and
-        * subtract 0.5% of the total.  Empirical testing has shown that
+        * Subtract 0.5% of the total.  Empirical testing has shown that
         * overhead in DELAY() works out to approximately this value.
         */
-       tsc2 -= tsc1;
        *rate = tsc2 * 1000 - tsc2 * 5;
        return (0);
 }

Modified: head/sys/pc98/pc98/machdep.c
==============================================================================
--- head/sys/pc98/pc98/machdep.c        Wed Dec  8 22:54:18 2010        
(r216311)
+++ head/sys/pc98/pc98/machdep.c        Wed Dec  8 23:40:41 2010        
(r216312)
@@ -1092,12 +1092,16 @@ cpu_est_clockrate(int cpu_id, uint64_t *
        thread_unlock(curthread);
 #endif
 
+       tsc2 -= tsc1;
+       if (tsc_freq != 0 && !tsc_is_broken) {
+               *rate = tsc2 * 1000;
+               return (0);
+       }
+
        /*
-        * Calculate the difference in readings, convert to Mhz, and
-        * subtract 0.5% of the total.  Empirical testing has shown that
+        * Subtract 0.5% of the total.  Empirical testing has shown that
         * overhead in DELAY() works out to approximately this value.
         */
-       tsc2 -= tsc1;
        *rate = tsc2 * 1000 - tsc2 * 5;
        return (0);
 }
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to