aboutsummaryrefslogtreecommitdiff
path: root/kernel/irq-as.S
blob: b2c00044c808e719b684a73c70939f57e919906a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
        .extern irq_handler

irq_stub:

        pusha
        push %ds
        push %es
        push %fs
        push %gs
        mov $0x10, %ax
        mov %ax, %ds
        mov %ax, %es
        mov %ax, %fs
        mov %ax, %gs
        mov %esp, %eax  # push the stack
        push %eax
        mov $irq_handler, %eax
        call *%eax
        pop %eax
        pop %gs
        pop %fs
        pop %es
        pop %ds
        popa
        addl $8, %esp
        iret

        .global _irq0
        .global _irq1
        .global _irq2
        .global _irq3
        .global _irq4
        .global _irq5
        .global _irq6
        .global _irq7
        .global _irq8
        .global _irq9
        .global _irq10
        .global _irq11
        .global _irq12
        .global _irq13
        .global _irq14
        .global _irq15

_irq0:
        cli
        pushl $0
        pushl $32
        jmp irq_stub

_irq1:
        cli
        pushl $0
        pushl $33
        jmp irq_stub

_irq2:
        cli
        pushl $0
        pushl $34
        jmp irq_stub

_irq3:
        cli
        pushl $0
        pushl $35
        jmp irq_stub

_irq4:
        cli
        pushl $0
        pushl $36
        jmp irq_stub

_irq5:
        cli
        pushl $0
        pushl $37
        jmp irq_stub

_irq6:
        cli
        pushl $0
        pushl $38
        jmp irq_stub

_irq7:
        cli
        pushl $0
        pushl $39
        jmp irq_stub

_irq8:
        cli
        pushl $0
        pushl $40
        jmp irq_stub

_irq9:
        cli
        pushl $0
        pushl $41
        jmp irq_stub

_irq10:
        cli
        pushl $0
        pushl $42
        jmp irq_stub

_irq11:
        cli
        pushl $0
        pushl $43
        jmp irq_stub

_irq12:
        cli
        pushl $0
        pushl $44
        jmp irq_stub

_irq13:
        cli
        pushl $0
        pushl $45
        jmp irq_stub

_irq14:
        cli
        pushl $0
        pushl $46
        jmp irq_stub

_irq15:
        cli
        pushl $0
        pushl $47
        jmp irq_stub