[openfirmware] r948 - cpu/x86
svn at openfirmware.info
svn at openfirmware.info
Tue Sep 30 22:18:05 CEST 2008
Author: wmb
Date: 2008-09-30 22:18:05 +0200 (Tue, 30 Sep 2008)
New Revision: 948
Modified:
cpu/x86/interrup.fth
Log:
Added "halt" and "?halt" words to save power on x86 systems.
Also helps when running under an emulator by yielding the host CPU.
Modified: cpu/x86/interrup.fth
===================================================================
--- cpu/x86/interrup.fth 2008-09-30 20:15:44 UTC (rev 947)
+++ cpu/x86/interrup.fth 2008-09-30 20:18:05 UTC (rev 948)
@@ -20,6 +20,25 @@
h# 200 # bx test 0<> if ax dec then \ Test interrupt flag bit
ax push
c;
+
+\ Unconditional halt - stops instruction execution until an interrupt.
+\ If interrupts are disabled, this could hang forever.
+code halt hlt c;
+
+\ Safe halt that is a no-op if interrupts are disabled
+code ?halt ( -- )
+ pushf ax pop
+ h# 200 # ax test 0<> if hlt then
+c;
+
+\ You can install this in "key" to lower the idle power or to make
+\ the system use fewer CPU cycles when running on an emulator.
+
+: halting-key ( -- )
+ begin key? 0= while ?halt repeat
+ (key
+;
+
\ LICENSE_BEGIN
\ Copyright (c) 2006 FirmWorks
\
More information about the openfirmware
mailing list