Magellan Linux

Annotation of /trunk/mkinitrd-magellan/isolinux/idle.inc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1133 - (hide annotations) (download)
Thu Aug 19 09:50:43 2010 UTC (13 years, 8 months ago) by niro
File size: 1574 byte(s)
-updated to isolinux-3.86
1 niro 1133 ;; -*- fundamental -*- ---------------------------------------------------
2     ;;
3     ;; Copyright 2008 H. Peter Anvin - All Rights Reserved
4     ;; Copyright 2009 Intel Corporation; author: H. Peter Anvin
5     ;;
6     ;; This program is free software; you can redistribute it and/or modify
7     ;; it under the terms of the GNU General Public License as published by
8     ;; the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
9     ;; Boston MA 02110-1301, USA; either version 2 of the License, or
10     ;; (at your option) any later version; incorporated herein by reference.
11     ;;
12     ;; -----------------------------------------------------------------------
13    
14     section .text
15     TICKS_TO_IDLE equ 4
16    
17     reset_idle:
18     push ax
19     mov ax,[cs:BIOS_timer]
20     mov [cs:IdleTimer],ax
21     pop ax
22     sti ; Guard against BIOS/PXE brokenness...
23     ret
24    
25     do_idle:
26     push ax
27     push ds
28     push es
29     mov ax,cs
30     mov ds,ax
31     mov es,ax
32     pushf
33     pop ax
34     test ah,2
35     jnz .ok
36     push si
37     push cx
38     mov si,hlt_err
39     call writestr
40     mov si,sp
41     add si,10
42     mov cx,16
43     .errloop:
44     ss lodsw
45     call writehex4
46     dec cx
47     jz .endloop
48     mov al,' '
49     call writechr
50     jmp .errloop
51     .endloop:
52     call crlf
53     pop cx
54     pop si
55     sti
56     .ok:
57     mov ax,[BIOS_timer]
58     sub ax,[IdleTimer]
59     cmp ax,TICKS_TO_IDLE
60     jb .done
61     call [IdleHook]
62     cmp dword [NoHalt],0
63     jne .done
64     hlt
65     .done:
66     pop es
67     pop ds
68     pop ax
69     .ret: ret
70    
71     section .data
72     alignb 4
73     NoHalt dw 0 ; NoHalt set by user
74     ForceNoHalt dw 0 ; NoHalt forced by hardware config
75     IdleHook dw do_idle.ret
76    
77     hlt_err db 'ERROR: idle with IF=0', CR, LF, 0
78    
79     section .bss
80     IdleTimer resw 1