Author: wmb Date: 2008-09-03 00:45:08 +0200 (Wed, 03 Sep 2008) New Revision: 918
Modified: cpu/x86/pc/neptune/banner.fth cpu/x86/pc/neptune/devices.fth dev/geode/msr.fth Log: Neptune - auto-detect PCI, CPU, and memory speeds in stand-init.
Modified: cpu/x86/pc/neptune/banner.fth =================================================================== --- cpu/x86/pc/neptune/banner.fth 2008-09-02 21:20:06 UTC (rev 917) +++ cpu/x86/pc/neptune/banner.fth 2008-09-02 22:45:08 UTC (rev 918) @@ -3,25 +3,13 @@
headerless
-: geode-print-pll ( -- ) - ." Geode CPU Speed " - h# 4c00.0014 rdmsr swap drop - h# 3E and 2/ - 1 + d# 66 * 2/ decimal . cr - - ." GeodeLink Speed " - h# 4c00.0014 rdmsr swap drop - h# FFF and 7 >> - 1 + d# 66 * 2/ decimal . cr - - ." PCI Speed " - h# 4c00.0014 rdmsr drop - 1 7 << and - 0= if d# 33 . else d# 66 . then cr - - hex +: show-speeds ( -- ) + \ Round so the numbers come out the way they are conventionally cited + ." CPU " cpu-speed d# 1,000,000 rounded-/ .d ." MHz, " + ." Memory " gl-speed d# 1,000,000 / .d ." MHz, " + ." PCI " pci-speed d# 1,000,000 / .d ." MHz" cr ; -' geode-print-pll to banner-extras +' show-speeds to banner-extras
: .rom ( -- ) ." OpenFirmware " @@ -34,8 +22,7 @@ ;
: (xbanner-basics) ( -- ) - ?spaces cpu-model type ." , " .memory cr - ?spaces .rom cr + ?spaces cpu-model type ." , " .memory ." , " .rom cr ; ' (xbanner-basics) to banner-basics
Modified: cpu/x86/pc/neptune/devices.fth =================================================================== --- cpu/x86/pc/neptune/devices.fth 2008-09-02 21:20:06 UTC (rev 917) +++ cpu/x86/pc/neptune/devices.fth 2008-09-02 22:45:08 UTC (rev 918) @@ -26,11 +26,9 @@
\ Use the CPU chip's Time Stamp Counter for timing; it does just what we want fload ${BP}/cpu/x86/tsc.fth -\ d# 366,666 to ms-factor \ XXX is this right???? -\ d# 367 to us-factor
stand-init: - d# 366,666,667 " AMD,Geode LX" + cpu-speed " AMD,Geode LX"
" /cpu" find-device ( cpu-clock-hz model$ ) " model" string-property ( cpu-clock-hz ) @@ -300,7 +298,7 @@
stand-init: PCI properties " /pci" find-device - d# 66,666,667 " clock-frequency" integer-property + pci-speed " clock-frequency" integer-property dend ;
@@ -339,6 +337,7 @@ \ XXX perhaps report subordinate version info? " Neptune" model " Dave Neptune" " banner-name" string-property + gl-speed " clock-frequency" integer-property dend
" /openprom" find-device
Modified: dev/geode/msr.fth =================================================================== --- dev/geode/msr.fth 2008-09-02 21:20:06 UTC (rev 917) +++ dev/geode/msr.fth 2008-09-02 22:45:08 UTC (rev 918) @@ -81,6 +81,23 @@ : usb-base-off ( msr# -- ) 0. rot msr! ; : usb-kel-off ( msr# -- ) 0. rot msr! ;
+: pci-speed ( -- hz ) + h# 4c00.0014 rdmsr drop ( low ) + 1 7 << and if d# 66,666,667 else d# 33,333,333 then +; +: gl-speed ( -- hz ) + pci-speed ( hz ) + h# 4c00.0014 rdmsr nip >r ( hz r: high ) + r@ 6 rshift 1 and if 2/ then ( hz' r: high ) + r> 7 rshift h# 1f and 1+ * ( hz' ) +; +: cpu-speed ( -- hz ) + pci-speed ( hz ) + h# 4c00.0014 rdmsr nip >r ( hz r: high ) + r@ 1 and if 2/ then ( hz' r: high ) + r> 1 rshift h# 1f and 1+ * ( hz' ) +; + \ LICENSE_BEGIN \ Copyright (c) 2008 FirmWorks \
openfirmware@openfirmware.info