Subversion Repositories Kolibri OS

Rev

Rev 2118 | Rev 2231 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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