summaryrefslogtreecommitdiff
path: root/src/c/irq.c
blob: 62b53eec59ede9bf1eacf9e0cc021d20e9e340c3 (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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
#include<stdio.h>
#include<asm.h>

#define INTERRUPT_GATE_32 0x8e

#define KERNEL_CODE 0x08
#define KERNEL_DATA 0x10

#define PIC1_COMMAND_PORT 0x20
#define PIC1_DATA_PORT 0x21
#define PIC2_COMMAND_PORT 0xA0
#define PIC2_DATA_PORT 0xA1

void irq0_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 0.\n");
    printf("Divide-by-zero Error\n");
}

void irq1_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 1.\n");
    printf("Debug\n");
}

void irq2_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 2.\n");
    printf("Non-maskable Interrupt\n");
}

void irq3_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 3.\n");
    printf("Breakpoint\n");
}

void irq4_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 4.\n");
    printf("Overflow\n");
}

void irq5_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 5.\n");
    printf("Bound Range Exceeded\n");
}

void irq6_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 6.\n");
    printf("Invalid Opcode\n");
}

void irq7_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 7.\n");
    printf("Device Not Available\n");
}

void irq8_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 8.\n");
    printf("Double Fault\n");
}

void irq9_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 9.\n");
    printf("Coprocessor Segment Overrun\n");
}

void irq10_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 10.\n");
    printf("Invalid TSS\n");
}

void irq11_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 11.\n");
    printf("Segment Not Present\n");
}

void irq12_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 12.\n");
    printf("Stack-Segment Fault\n");
}

void irq13_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 13.\n");
    printf("General Protection Fault\n");
}

void irq14_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 14.\n");
    printf("Page Fault\n");
}

void irq15_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 15.\n");
    printf("Reserved\n");
}

void irq16_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 16.\n");
    printf("x87 Floating-Point Exception\n");
}

void irq17_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 17.\n");
    printf("Alignment Check\n");
}

void irq18_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 18.\n");
    printf("Machine Check\n");
}

void irq19_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 19.\n");
    printf("SIMD Floating-Point ExceptionM/#XF\n");
}

void irq20_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 20.\n");
    printf("Virtualization Exception\n");
}

void irq21_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 21.\n");
    printf("Reserved\n");
}

void irq22_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 22.\n");
    printf("Reserved\n");
}

void irq23_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 23.\n");
    printf("Reserved\n");
}

void irq24_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 24.\n");
    printf("Reserved\n");
}

void irq25_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 25.\n");
    printf("Reserved\n");
}

void irq26_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 26.\n");
    printf("Reserved\n");
}

void irq27_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 27.\n");
    printf("Reserved\n");
}

void irq28_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 28.\n");
    printf("Reserved\n");
}

void irq29_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 29.\n");
    printf("Reserved\n");
}

void irq30_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 30.\n");
    printf("Security Exception\n");
}

void irq31_handler()
{
    ioport_out(PIC1_COMMAND_PORT, 0x20);
    printf("Interrupt 31.\n");
    printf("Reserved\n");
}