[openfirmware] r1488 - in cpu/x86: . pc/olpc pc/olpc/via

svn at openfirmware.info svn at openfirmware.info
Thu Nov 19 01:12:30 CET 2009


Author: wmb
Date: 2009-11-19 01:12:30 +0100 (Thu, 19 Nov 2009)
New Revision: 1488

Modified:
   cpu/x86/acpitimer.fth
   cpu/x86/pc/olpc/config.fth
   cpu/x86/pc/olpc/via/config.fth
   cpu/x86/tsc.fth
Log:
OLPC trac 9698 - Switched back to using the timestamp counter for timing
operations, because the ACPI timer rolls over too frequently for operations
like fs-update.  We will just have to live with the variability due to throttling.



Modified: cpu/x86/acpitimer.fth
===================================================================
--- cpu/x86/acpitimer.fth	2009-11-18 23:39:03 UTC (rev 1487)
+++ cpu/x86/acpitimer.fth	2009-11-19 00:12:30 UTC (rev 1488)
@@ -23,10 +23,13 @@
    d# 100,000  um/mod nip to us-factor  ( )
 ;
 
-[ifdef] use-acpi-timing
+[ifdef] use-acpi-delays
 : us  ( us -- )  acpi-us  ;
 ' acpi-ms to ms
+[then]
 
+[ifdef] use-acpi-timing
+
 \ Timing tools
 variable timestamp1
 : t(  ( -- )  acpi-timer@ timestamp1 ! ;

Modified: cpu/x86/pc/olpc/config.fth
===================================================================
--- cpu/x86/pc/olpc/config.fth	2009-11-18 23:39:03 UTC (rev 1487)
+++ cpu/x86/pc/olpc/config.fth	2009-11-19 00:12:30 UTC (rev 1488)
@@ -17,8 +17,10 @@
 create jffs2-support
 create use-elf
 
-\ create use-timestamp-counter \ Use CPU's timestamp counter for timing ...
-			\ ... this is worthwhile if your CPU has one.
+\ The disadvantage of the timestamp counter is that it changes speed with
+\ CPU throttling.  The advantage is that it is 64 bits, so no rollover.
+create use-timestamp-counter \ Use CPU's timestamp counter for "ms"
+create use-tsc-timing        \ Use timestamp counter for t( .. )t
 
 create resident-packages
 \ create use-watch-all

Modified: cpu/x86/pc/olpc/via/config.fth
===================================================================
--- cpu/x86/pc/olpc/via/config.fth	2009-11-18 23:39:03 UTC (rev 1487)
+++ cpu/x86/pc/olpc/via/config.fth	2009-11-19 00:12:30 UTC (rev 1488)
@@ -26,10 +26,17 @@
 create linux-support
 create use-elf
 
-\ create use-timestamp-counter \ Use CPU's timestamp counter for timing ...
-			\ ... this is worthwhile if your CPU has one.
-create use-acpi-timing
+\ The disadvantage of the timestamp counter is that it changes speed with
+\ CPU throttling.  The advantage is that it is 64 bits, so no rollover.
+create use-timestamp-counter \ Use CPU's timestamp counter for "ms"
+create use-tsc-timing        \ Use timestamp counter for t( .. )t
 
+\ The advantage of the ACPI counter is that its speed is independent of
+\ CPU throttling.  The disadvantage is that it is 32 bits, so it rolls
+\ over every 20 minutes or so, unless you extend it with an SMI handler.
+\ create use-acpi-timing
+\ create use-acpi-delays
+
 create resident-packages
 \ create use-watch-all
 create no-floppy-node

Modified: cpu/x86/tsc.fth
===================================================================
--- cpu/x86/tsc.fth	2009-11-18 23:39:03 UTC (rev 1487)
+++ cpu/x86/tsc.fth	2009-11-19 00:12:30 UTC (rev 1488)
@@ -35,8 +35,10 @@
 : 1ms  ( -- )  ms-factor spins  ;
 : us  ( #microseconds -- )  us-factor * spins  ;
 
+[ifdef] use-timestamp-counter
 : (ms)  ( #ms -- )  0  ?do  1ms  loop  ;
 ' (ms) to ms
+[then]
 
 [ifdef] use-tsc-timing   \ These are precise but inaccurate, as the TSC varies with clock throttling
 \ Timing tools




More information about the openfirmware mailing list