source: bootcd/isolinux/syslinux-6.03/core/timer.inc @ dd1be7c

Last change on this file since dd1be7c was e16e8f2, checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago

bootstuff

  • Property mode set to 100644
File size: 1.7 KB
Line 
1;; -----------------------------------------------------------------------
2;;
3;;   Copyright 2009 Intel Corporation; author: H. Peter Anvin
4;;
5;;   This program is free software; you can redistribute it and/or modify
6;;   it under the terms of the GNU General Public License as published by
7;;   the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
8;;   Boston MA 02110-1301, USA; either version 2 of the License, or
9;;   (at your option) any later version; incorporated herein by reference.
10;;
11;; -----------------------------------------------------------------------
12
13;;
14;; timer.inc
15;;
16;; Very simple counting timer
17;;
18;; This lets us have a simple incrementing variable without worrying
19;; about the BIOS_timer variable wrapping around at "midnight" and other
20;; weird things.
21;;
22;; This also maintains a timer variable calibrated in milliseconds
23;; (wraparound time = 49.7 days!)
24;;
25
26                section .text16
27
28timer_init:
29                ; Hook INT 1Ch
30                mov eax,[BIOS_timer_hook]
31                mov [BIOS_timer_next],eax
32                mov dword [BIOS_timer_hook],timer_irq
33                ret
34
35                global bios_timer_cleanup:function hidden
36bios_timer_cleanup:
37                ; Unhook INT 1Ch
38                mov eax,[BIOS_timer_next]
39                mov [BIOS_timer_hook],eax
40                ret
41
42;
43; The specified frequency is 14.31818 MHz/12/65536; this turns out
44; to be a period of 54.92542 ms, or 0x36.ece8(187c) hexadecimal.
45;
46                global timer_irq:function hidden
47timer_irq:
48                inc dword [cs:__jiffies]
49                add word  [cs:__ms_timer_adj],0xece8
50                adc dword [cs:__ms_timer],0x36
51                jmp 0:0
52                global BIOS_timer_next:data hidden
53BIOS_timer_next equ $-4
54
55                section .data16
56                alignz 4
57                global __jiffies:data hidden, __ms_timer
58__jiffies       dd 0                    ; Clock tick timer
59__ms_timer      dd 0                    ; Millisecond timer
60__ms_timer_adj  dw 0                    ; Millisecond timer correction factor
Note: See TracBrowser for help on using the repository browser.