|
1 | 1 | #include "descriptors.h" |
2 | 2 |
|
3 | | -extern void gdt_write(unsigned int); |
4 | | -extern void idt_write(unsigned int); |
5 | | - |
6 | | -#pragma region isrs |
7 | | -extern void isr0(); |
8 | | -extern void isr1(); |
9 | | -extern void isr2(); |
10 | | -extern void isr3(); |
11 | | -extern void isr4(); |
12 | | -extern void isr5(); |
13 | | -extern void isr6(); |
14 | | -extern void isr7(); |
15 | | -extern void isr8(); |
16 | | -extern void isr9(); |
17 | | -extern void isr10(); |
18 | | -extern void isr11(); |
19 | | -extern void isr12(); |
20 | | -extern void isr13(); |
21 | | -extern void isr14(); |
22 | | -extern void isr15(); |
23 | | -extern void isr16(); |
24 | | -extern void isr17(); |
25 | | -extern void isr18(); |
26 | | -extern void isr19(); |
27 | | -extern void isr20(); |
28 | | -extern void isr21(); |
29 | | -extern void isr22(); |
30 | | -extern void isr23(); |
31 | | -extern void isr24(); |
32 | | -extern void isr25(); |
33 | | -extern void isr26(); |
34 | | -extern void isr27(); |
35 | | -extern void isr28(); |
36 | | -extern void isr29(); |
37 | | -extern void isr30(); |
38 | | -extern void isr31(); |
39 | | -extern void isr32(); |
40 | | -extern void isr33(); |
41 | | -extern void isr34(); |
42 | | -extern void isr35(); |
43 | | -extern void isr36(); |
44 | | -extern void isr37(); |
45 | | -extern void isr38(); |
46 | | -extern void isr39(); |
47 | | -extern void isr40(); |
48 | | -extern void isr41(); |
49 | | -extern void isr42(); |
50 | | -extern void isr43(); |
51 | | -extern void isr44(); |
52 | | -extern void isr45(); |
53 | | -extern void isr46(); |
54 | | -extern void isr47(); |
55 | | -extern void isr48(); |
56 | | -extern void isr49(); |
57 | | -extern void isr50(); |
58 | | -extern void isr51(); |
59 | | -extern void isr52(); |
60 | | -extern void isr53(); |
61 | | -extern void isr54(); |
62 | | -extern void isr55(); |
63 | | -extern void isr56(); |
64 | | -extern void isr57(); |
65 | | -extern void isr58(); |
66 | | -extern void isr59(); |
67 | | -extern void isr60(); |
68 | | -extern void isr61(); |
69 | | -extern void isr62(); |
70 | | -extern void isr63(); |
71 | | -extern void isr64(); |
72 | | -extern void isr65(); |
73 | | -extern void isr66(); |
74 | | -extern void isr67(); |
75 | | -extern void isr68(); |
76 | | -extern void isr69(); |
77 | | -extern void isr70(); |
78 | | -extern void isr71(); |
79 | | -extern void isr72(); |
80 | | -extern void isr73(); |
81 | | -extern void isr74(); |
82 | | -extern void isr75(); |
83 | | -extern void isr76(); |
84 | | -extern void isr77(); |
85 | | -extern void isr78(); |
86 | | -extern void isr79(); |
87 | | -extern void isr80(); |
88 | | -extern void isr81(); |
89 | | -extern void isr82(); |
90 | | -extern void isr83(); |
91 | | -extern void isr84(); |
92 | | -extern void isr85(); |
93 | | -extern void isr86(); |
94 | | -extern void isr87(); |
95 | | -extern void isr88(); |
96 | | -extern void isr89(); |
97 | | -extern void isr90(); |
98 | | -extern void isr91(); |
99 | | -extern void isr92(); |
100 | | -extern void isr93(); |
101 | | -extern void isr94(); |
102 | | -extern void isr95(); |
103 | | -extern void isr96(); |
104 | | -extern void isr97(); |
105 | | -extern void isr98(); |
106 | | -extern void isr99(); |
107 | | -extern void isr100(); |
108 | | -extern void isr101(); |
109 | | -extern void isr102(); |
110 | | -extern void isr103(); |
111 | | -extern void isr104(); |
112 | | -extern void isr105(); |
113 | | -extern void isr106(); |
114 | | -extern void isr107(); |
115 | | -extern void isr108(); |
116 | | -extern void isr109(); |
117 | | -extern void isr110(); |
118 | | -extern void isr111(); |
119 | | -extern void isr112(); |
120 | | -extern void isr113(); |
121 | | -extern void isr114(); |
122 | | -extern void isr115(); |
123 | | -extern void isr116(); |
124 | | -extern void isr117(); |
125 | | -extern void isr118(); |
126 | | -extern void isr119(); |
127 | | -extern void isr120(); |
128 | | -extern void isr121(); |
129 | | -extern void isr122(); |
130 | | -extern void isr123(); |
131 | | -extern void isr124(); |
132 | | -extern void isr125(); |
133 | | -extern void isr126(); |
134 | | -extern void isr127(); |
135 | | -extern void isr128(); |
136 | | -extern void isr129(); |
137 | | -extern void isr130(); |
138 | | -extern void isr131(); |
139 | | -extern void isr132(); |
140 | | -extern void isr133(); |
141 | | -extern void isr134(); |
142 | | -extern void isr135(); |
143 | | -extern void isr136(); |
144 | | -extern void isr137(); |
145 | | -extern void isr138(); |
146 | | -extern void isr139(); |
147 | | -extern void isr140(); |
148 | | -extern void isr141(); |
149 | | -extern void isr142(); |
150 | | -extern void isr143(); |
151 | | -extern void isr144(); |
152 | | -extern void isr145(); |
153 | | -extern void isr146(); |
154 | | -extern void isr147(); |
155 | | -extern void isr148(); |
156 | | -extern void isr149(); |
157 | | -extern void isr150(); |
158 | | -extern void isr151(); |
159 | | -extern void isr152(); |
160 | | -extern void isr153(); |
161 | | -extern void isr154(); |
162 | | -extern void isr155(); |
163 | | -extern void isr156(); |
164 | | -extern void isr157(); |
165 | | -extern void isr158(); |
166 | | -extern void isr159(); |
167 | | -extern void isr160(); |
168 | | -extern void isr161(); |
169 | | -extern void isr162(); |
170 | | -extern void isr163(); |
171 | | -extern void isr164(); |
172 | | -extern void isr165(); |
173 | | -extern void isr166(); |
174 | | -extern void isr167(); |
175 | | -extern void isr168(); |
176 | | -extern void isr169(); |
177 | | -extern void isr170(); |
178 | | -extern void isr171(); |
179 | | -extern void isr172(); |
180 | | -extern void isr173(); |
181 | | -extern void isr174(); |
182 | | -extern void isr175(); |
183 | | -extern void isr176(); |
184 | | -extern void isr177(); |
185 | | -extern void isr178(); |
186 | | -extern void isr179(); |
187 | | -extern void isr180(); |
188 | | -extern void isr181(); |
189 | | -extern void isr182(); |
190 | | -extern void isr183(); |
191 | | -extern void isr184(); |
192 | | -extern void isr185(); |
193 | | -extern void isr186(); |
194 | | -extern void isr187(); |
195 | | -extern void isr188(); |
196 | | -extern void isr189(); |
197 | | -extern void isr190(); |
198 | | -extern void isr191(); |
199 | | -extern void isr192(); |
200 | | -extern void isr193(); |
201 | | -extern void isr194(); |
202 | | -extern void isr195(); |
203 | | -extern void isr196(); |
204 | | -extern void isr197(); |
205 | | -extern void isr198(); |
206 | | -extern void isr199(); |
207 | | -extern void isr200(); |
208 | | -extern void isr201(); |
209 | | -extern void isr202(); |
210 | | -extern void isr203(); |
211 | | -extern void isr204(); |
212 | | -extern void isr205(); |
213 | | -extern void isr206(); |
214 | | -extern void isr207(); |
215 | | -extern void isr208(); |
216 | | -extern void isr209(); |
217 | | -extern void isr210(); |
218 | | -extern void isr211(); |
219 | | -extern void isr212(); |
220 | | -extern void isr213(); |
221 | | -extern void isr214(); |
222 | | -extern void isr215(); |
223 | | -extern void isr216(); |
224 | | -extern void isr217(); |
225 | | -extern void isr218(); |
226 | | -extern void isr219(); |
227 | | -extern void isr220(); |
228 | | -extern void isr221(); |
229 | | -extern void isr222(); |
230 | | -extern void isr223(); |
231 | | -extern void isr224(); |
232 | | -extern void isr225(); |
233 | | -extern void isr226(); |
234 | | -extern void isr227(); |
235 | | -extern void isr228(); |
236 | | -extern void isr229(); |
237 | | -extern void isr230(); |
238 | | -extern void isr231(); |
239 | | -extern void isr232(); |
240 | | -extern void isr233(); |
241 | | -extern void isr234(); |
242 | | -extern void isr235(); |
243 | | -extern void isr236(); |
244 | | -extern void isr237(); |
245 | | -extern void isr238(); |
246 | | -extern void isr239(); |
247 | | -extern void isr240(); |
248 | | -extern void isr241(); |
249 | | -extern void isr242(); |
250 | | -extern void isr243(); |
251 | | -extern void isr244(); |
252 | | -extern void isr245(); |
253 | | -extern void isr246(); |
254 | | -extern void isr247(); |
255 | | -extern void isr248(); |
256 | | -extern void isr249(); |
257 | | -extern void isr250(); |
258 | | -extern void isr251(); |
259 | | -extern void isr252(); |
260 | | -extern void isr253(); |
261 | | -extern void isr254(); |
262 | | -extern void isr255(); |
263 | | -#pragma endregion |
264 | | - |
265 | | -// A struct that represents a line in the GDT |
266 | | -struct gdt_entry_struct { |
267 | | - unsigned short limit_low; |
268 | | - unsigned short base_low; |
269 | | - unsigned char base_middle; |
270 | | - unsigned char access; |
271 | | - unsigned char granularity; // 4 bits of the limit and 4 bits which are flags |
272 | | - unsigned char base_high; |
273 | | -} __attribute__((packed)); //No padding |
274 | | - |
275 | | -typedef struct gdt_entry_struct gdt_entry_t; |
276 | | - |
277 | | -// A struct that represents the pointer passed to lgdt (a.k.a. GDT descriptor) |
278 | | -struct gdt_ptr_struct { |
279 | | - unsigned short limit; |
280 | | - unsigned int base; |
281 | | -} __attribute__((packed)); |
282 | | - |
283 | | -typedef struct gdt_ptr_struct gdt_ptr_t; |
284 | | - |
285 | | -// A struct that represents a line in the IDT |
286 | | -struct idt_entry_struct{ |
287 | | - unsigned short base_low; |
288 | | - unsigned short selector; |
289 | | - unsigned char always0; |
290 | | - unsigned char flags; |
291 | | - unsigned short base_high; |
292 | | -} __attribute__((packed)); |
293 | | - |
294 | | -typedef struct idt_entry_struct idt_entry_t; |
295 | | - |
296 | | -// A struct that represents the pointer passed to lidt (a.k.a. IDT descriptor) |
297 | | -struct idt_ptr_struct{ |
298 | | - unsigned short limit; |
299 | | - unsigned int base; |
300 | | -} __attribute__((packed)); |
301 | | - |
302 | | -typedef struct idt_ptr_struct idt_ptr_t; |
303 | | - |
304 | 3 | // Define GDT |
305 | 4 | gdt_entry_t gdt_entries[5]; |
306 | 5 | // Define IDT |
@@ -338,7 +37,7 @@ void idt_set_gate(int index,unsigned int base, unsigned short selector, unsigned |
338 | 37 | idt_entries[index].base_high = (base >> 16) & 0xFFFF; |
339 | 38 | idt_entries[index].selector = selector; |
340 | 39 | idt_entries[index].always0 = 0; |
341 | | - idt_entries[index].flags = flags; |
| 40 | + idt_entries[index].flags = flags; |
342 | 41 | } |
343 | 42 |
|
344 | 43 | // Setup the IDT |
|
0 commit comments