summaryrefslogtreecommitdiffstats
path: root/contrib/syslinux-4.02/core/idle.inc
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/syslinux-4.02/core/idle.inc')
-rw-r--r--contrib/syslinux-4.02/core/idle.inc81
1 files changed, 81 insertions, 0 deletions
diff --git a/contrib/syslinux-4.02/core/idle.inc b/contrib/syslinux-4.02/core/idle.inc
new file mode 100644
index 0000000..9677c82
--- /dev/null
+++ b/contrib/syslinux-4.02/core/idle.inc
@@ -0,0 +1,81 @@
+;; -*- fundamental -*- ---------------------------------------------------
+;;
+;; Copyright 2008 H. Peter Anvin - All Rights Reserved
+;; Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
+;;
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+;; Boston MA 02110-1301, USA; either version 2 of the License, or
+;; (at your option) any later version; incorporated herein by reference.
+;;
+;; -----------------------------------------------------------------------
+
+ section .text16
+TICKS_TO_IDLE equ 4 ; Also in idle.c
+
+reset_idle:
+ push eax
+ mov eax,[cs:__jiffies]
+ mov [cs:_IdleTimer],eax
+ pop eax
+ sti ; Guard against BIOS/PXE brokenness...
+ ret
+
+do_idle:
+ push eax
+ push ds
+ push es
+ mov ax,cs
+ mov ds,ax
+ mov es,ax
+ pushf
+ pop ax
+ test ah,2
+ jnz .ok
+ push si
+ push cx
+ mov si,hlt_err
+ call writestr
+ mov si,sp
+ add si,10
+ mov cx,16
+.errloop:
+ ss lodsw
+ call writehex4
+ dec cx
+ jz .endloop
+ mov al,' '
+ call writechr
+ jmp .errloop
+.endloop:
+ call crlf
+ pop cx
+ pop si
+ sti
+.ok:
+ ; Don't spend time jumping to PM unless we're actually idle...
+
+ mov eax,[__jiffies]
+ sub eax,[_IdleTimer]
+ cmp eax,TICKS_TO_IDLE
+ jb .done
+
+ extern __idle
+ pm_call __idle
+.done:
+ pop es
+ pop ds
+ pop eax
+.ret: ret
+
+ section .data16
+ alignz 4
+ global _IdleTimer
+_IdleTimer dd 0
+ global NoHalt
+NoHalt dw 0
+
+hlt_err db 'ERROR: idle with IF=0', CR, LF, 0
+
+ section .text16