Subversion Repositories Kolibri OS

Rev

Rev 2231 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2118 serge 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
3
;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;;
4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
8
align 4
9
pic_delay:
10
 
11
        jmp     pdl1
12
pdl1:   ret
13
 
14
align 4
15
rerouteirqs:
16
 
17
        cli
18
 
19
        mov     al,0x11         ;  icw4, edge triggered
20
        out     0x20,al
21
        call    pic_delay
22
        out     0xA0,al
23
        call    pic_delay
24
 
25
        mov     al,0x20         ;  generate 0x20 +
26
        out     0x21,al
27
        call    pic_delay
28
        mov     al,0x28         ;  generate 0x28 +
29
        out     0xA1,al
30
        call    pic_delay
31
 
32
        mov     al,0x04         ;  slave at irq2
33
        out     0x21,al
34
        call    pic_delay
35
        mov     al,0x02         ;  at irq9
36
        out     0xA1,al
37
        call    pic_delay
38
 
39
        mov     al,0x01         ;  8086 mode
40
        out     0x21,al
41
        call    pic_delay
42
        out     0xA1,al
43
        call    pic_delay
44
 
45
        mov     al,255          ; mask all irq's
46
        out     0xA1,al
47
        call    pic_delay
48
        out     0x21,al
49
        call    pic_delay
50
 
51
        mov     ecx,0x1000
52
        cld
53
picl1:  call    pic_delay
54
        loop    picl1
55
 
56
        mov     al,255          ; mask all irq's
57
        out     0xA1,al
58
        call    pic_delay
59
        out     0x21,al
60
        call    pic_delay
61
 
62
        ret
63
 
64
 
65
align 4
66
;proc enable_irq stdcall, irq_line:dword
67
enable_irq:                                ; FIXME make fastcall
68
       mov ebx, [esp+4]  ;irq_line
69
       mov edx, 0x21
70
       cmp ebx, 8
71
       jb @F
72
       mov edx, 0xA1
73
       sub ebx,8
74
@@:
75
       in al,dx
76
       btr eax, ebx
77
       out dx, al
78
       ret 4
79
 
80
 
81
align 4
82
;proc irq_eoi fastcall, irq_line:dword
83
irq_eoi:
84
       cmp cl, 8
85
       mov al, 0x20
86
       jb @f
87
       out 0xa0, al
88
@@:
89
       out 0x20, al
90
       ret