466 lines
26 KiB
Plaintext
466 lines
26 KiB
Plaintext
1 ;kernel.asm
|
|
2 ;Author: Josh Holtrop
|
|
3 ;Modified: 10/30/03
|
|
4
|
|
5 %define GDT_P 0x100000; ;1mb physical - Global Descriptor Table space
|
|
6 %define GDT_V GDT_P+0xC0000000
|
|
7 %define IDT_P 0x102000 ;1mb+8kb - Interrupt Descriptor Table space
|
|
8 %define IDT_V IDT_P+0xC0000000
|
|
9 %define PDBR_P 0x104000 ;1mb+16kb - Page Directory Base Register (first PD)
|
|
10 %define PDBR_V PDBR_P+0xC0000000
|
|
11 %define LOPT_P 0x105000 ;1mb+20kb - LOw Page Table for mapping first 4mb
|
|
12 %define LOPT_V LOPT_P+0xC0000000
|
|
13 %define KERNEL_P 0x106000 ;1mb+24kb - the kernel's physical address
|
|
14 %define KERNEL_V KERNEL_P+0xC0000000 ;3gb+1mb+24kb, the virtual address of the kernel
|
|
15
|
|
16 [global start]
|
|
17 [extern _isr]
|
|
18 [extern _k_init]
|
|
19
|
|
20 bits 32
|
|
21
|
|
22 ;This is where the kernel begins execution
|
|
23 ;At this point, the temporary gdt is set up to "map" 0xC000_0000 to 0x0.
|
|
24 ;We must enable paging with the first 4mb mapped 1:1 virtual:physical
|
|
25 ; and with the 4mb starting at 0xC000_0000 mapped to the first 4mb physical.
|
|
26 ;Then we can start using our "real" gdt, then unmap the lower 4mb.
|
|
27 start:
|
|
28 00000000 FA cli ;if they weren't already off
|
|
29
|
|
30 00000001 31C0 xor eax, eax
|
|
31 00000003 BF004010C0 mov edi, PDBR_V
|
|
32 00000008 B900040000 mov ecx, 1024 ;clear the PDBR
|
|
33 0000000D F3AB rep stosd
|
|
34 0000000F C705004010C0035010- mov [PDBR_V], dword LOPT_P|0x03 ;store the physical address of the LOw Page Table (read/write, present)
|
|
35 00000018 00
|
|
36 00000019 C705004C10C0035010- mov [PDBR_V+0xC00], dword LOPT_P|0x03 ;store the physical address of the LOw Page Table (read/write, present)
|
|
37 00000022 00
|
|
38
|
|
39 00000023 BF005010C0 mov edi, LOPT_V
|
|
40 00000028 B900040000 mov ecx, 1024
|
|
41 0000002D B803000000 mov eax, 0x03 ;starting physical address = 0x0 (read/write, present flags)
|
|
42 fill_lopt_loop: ;fill the page table
|
|
43 00000032 AB stosd
|
|
44 00000033 0500100000 add eax, 4096 ;increment next phsyical address by 4kb
|
|
45 00000038 E2F8 loop fill_lopt_loop
|
|
46
|
|
47 0000003A B800401000 mov eax, PDBR_P
|
|
48 0000003F 0F22D8 mov cr3, eax ;store the Page Directory Base Address
|
|
49 00000042 0F20C0 mov eax, cr0
|
|
50 00000045 0D00000080 or eax, 0x80000000 ;set page enable bit
|
|
51 0000004A 0F22C0 mov cr0, eax ;now paging is active!
|
|
52
|
|
53
|
|
54 0000004D BF000010C0 mov edi, GDT_V
|
|
55 00000052 BE[D4000000] mov esi, gdt
|
|
56 00000057 B948000000 mov ecx, gdt_end-gdt
|
|
57 copy_gdt:
|
|
58 0000005C AC lodsb
|
|
59 0000005D AA stosb
|
|
60 0000005E E2FC loop copy_gdt
|
|
61
|
|
62 00000060 BF002010C0 mov edi, IDT_V ;destination
|
|
63 00000065 BE[22010000] mov esi, isr_0 ;address of isr0
|
|
64 0000006A BA0B000000 mov edx, isr_1-isr_0 ;distance between isr labels
|
|
65 0000006F B932000000 mov ecx, 50 ;number of isrlabels
|
|
66 fill_idt:
|
|
67 00000074 89F3 mov ebx, esi
|
|
68 00000076 6689F0 mov ax, si
|
|
69 00000079 66AB stosw ;0 offset 15:0
|
|
70 0000007B 66B80800 mov ax, KERNEL_CODE
|
|
71 0000007F 66AB stosw ;2 selector 15:0
|
|
72 00000081 66B8008E mov ax, 0x8E00
|
|
73 00000085 66AB stosw ;4 [P][DPL][0][TYPE][0][0][0][0][0][0][0][0]
|
|
74 00000087 C1EE10 shr esi, 16
|
|
75 0000008A 6689F0 mov ax, si
|
|
76 0000008D 66AB stosw ;6 offset 31:16
|
|
77 0000008F 89DE mov esi, ebx
|
|
78 00000091 01D6 add esi, edx
|
|
79 00000093 E2DF loop fill_idt
|
|
80 00000095 66C705842110C000EE mov word [IDT_V+0x30*8+4], 0xEE00 ;interrupt 0x30 has user priviledges
|
|
81
|
|
82 0000009E 0F0115[CE000000] lgdt [gdtr] ;load gdt
|
|
83 000000A5 EA[AC000000]0800 jmp KERNEL_CODE:newgdtcontinue
|
|
84 newgdtcontinue:
|
|
85 000000AC 66B81000 mov ax, KERNEL_DATA
|
|
86 000000B0 8EC0 mov es, ax
|
|
87 000000B2 8ED8 mov ds, ax
|
|
88 000000B4 8EE8 mov gs, ax
|
|
89 000000B6 8EE0 mov fs, ax
|
|
90 000000B8 8ED0 mov ss, ax
|
|
91 000000BA BCFCFF1FC0 mov esp, 0xc01ffffc ;stack just under 3gb+2mb, moves downward
|
|
92 000000BF 0F011D[1C010000] lidt [idtr] ;load idt
|
|
93
|
|
94 000000C6 E8(00000000) call _k_init
|
|
95 haltit:
|
|
96 000000CB F4 hlt ;halt processor when k_init is done
|
|
97 000000CC EBFD jmp haltit ;shouldn't get here...
|
|
98
|
|
99 %include "gdt.inc"
|
|
100 <1> ;gdt.inc
|
|
101 <1> ;Author: Josh Holtrop
|
|
102 <1> ;for HOS
|
|
103 <1> ;Modified: 10/30/03
|
|
104 <1>
|
|
105 <1> gdtr:
|
|
106 000000CE 4700 <1> dw gdt_end-gdt-1
|
|
107 000000D0 00001000 <1> dd GDT_P
|
|
108 <1> gdt:
|
|
109 000000D4 00000000 <1> dd 0
|
|
110 000000D8 00000000 <1> dd 0
|
|
111 <1> KERNEL_CODE equ $-gdt
|
|
112 000000DC FFFF <1> dw 0xffff ;limit 15:0
|
|
113 000000DE 0000 <1> dw 0x0000 ;base 15:0
|
|
114 000000E0 00 <1> db 0x00 ;base 23:16
|
|
115 000000E1 9A <1> db 0x9A ;access ([P][DPL][1][Executable][Direction/Conforming][Writable/Readable][A])
|
|
116 000000E2 CF <1> db 0xCF ;flags ([G][D/B][0][0]) / limit 19:16
|
|
117 000000E3 00 <1> db 0x00 ;base 31:24
|
|
118 <1> KERNEL_DATA equ $-gdt
|
|
119 000000E4 FFFF <1> dw 0xffff ;limit 15:0
|
|
120 000000E6 0000 <1> dw 0x0000 ;base 15:0
|
|
121 000000E8 00 <1> db 0x00 ;base 23:16
|
|
122 000000E9 92 <1> db 0x92 ;access ([P][DPL][1][Executable][Direction/Conforming][Writable/Readable][A])
|
|
123 000000EA CF <1> db 0xCF ;flags ([G][D/B][0][0]) / limit 19:16
|
|
124 000000EB 00 <1> db 0x00 ;base 31:24
|
|
125 <1> VESA_CODE equ $-gdt
|
|
126 000000EC FFFF <1> dw 0xffff ;limit 15:0
|
|
127 000000EE 0000 <1> dw 0x0000 ;base 15:0
|
|
128 000000F0 00 <1> db 0x00 ;base 23:16
|
|
129 000000F1 9A <1> db 0x9A ;access ([P][DPL][1][Executable][Direction/Conforming][Writable/Readable][A])
|
|
130 000000F2 40 <1> db 0x40 ;flags ([G][D/B][0][0]) / limit 19:16
|
|
131 000000F3 00 <1> db 0x00 ;base 31:24
|
|
132 <1> VESA_DATA equ $-gdt
|
|
133 000000F4 FFFF <1> dw 0xffff ;limit 15:0
|
|
134 000000F6 0000 <1> dw 0x0000 ;base 15:0
|
|
135 000000F8 00 <1> db 0x00 ;base 23:16
|
|
136 000000F9 92 <1> db 0x92 ;access ([P][DPL][1][Executable][Direction/Conforming][Writable/Readable][A])
|
|
137 000000FA 40 <1> db 0x40 ;flags ([G][D/B][0][0]) / limit 19:16
|
|
138 000000FB 00 <1> db 0x00 ;base 31:24
|
|
139 <1> VIDEO_TEXT equ $-gdt
|
|
140 000000FC FF7F <1> dw 0x7FFF ;limit 15:0
|
|
141 000000FE 0080 <1> dw 0x8000 ;base 15:0
|
|
142 00000100 0B <1> db 0x0B ;base 23:16
|
|
143 00000101 92 <1> db 0x92 ;access ([P][DPL][1][Executable][Direction/Conforming][Writable/Readable][A])
|
|
144 00000102 40 <1> db 0x40 ;flags ([G][D/B][0][0]) / limit 19:16
|
|
145 00000103 00 <1> db 0x00 ;base 31:24
|
|
146 <1> VIDEO_GRAPHICS equ $-gdt
|
|
147 00000104 FFFF <1> dw 0xFFFF ;limit 15:0
|
|
148 00000106 0000 <1> dw 0x0000 ;base 15:0
|
|
149 00000108 0A <1> db 0x0A ;base 23:16
|
|
150 00000109 92 <1> db 0x92 ;access ([P][DPL][1][Executable][Direction/Conforming][Writable/Readable][A])
|
|
151 0000010A 40 <1> db 0x40 ;flags ([G][D/B][0][0]) / limit 19:16
|
|
152 0000010B 00 <1> db 0x00 ;base 31:24
|
|
153 <1> USER_CODE equ $-gdt
|
|
154 0000010C FFFF <1> dw 0xffff ;limit 15:0
|
|
155 0000010E 0000 <1> dw 0x0000 ;base 15:0
|
|
156 00000110 00 <1> db 0x00 ;base 23:16
|
|
157 00000111 FA <1> db 0xFA ;access ([P][DPL][1][Executable][Direction/Conforming][Writable/Readable][A])
|
|
158 00000112 CF <1> db 0xCF ;flags ([G][D/B][0][0]) / limit 19:16
|
|
159 00000113 00 <1> db 0x00 ;base 31:24
|
|
160 <1> USER_DATA equ $-gdt
|
|
161 00000114 FFFF <1> dw 0xffff ;limit 15:0
|
|
162 00000116 0000 <1> dw 0x0000 ;base 15:0
|
|
163 00000118 00 <1> db 0x00 ;base 23:16
|
|
164 00000119 F2 <1> db 0xF2 ;access ([P][DPL][1][Executable][Direction/Conforming][Writable/Readable][A])
|
|
165 0000011A CF <1> db 0xCF ;flags ([G][D/B][0][0]) / limit 19:16
|
|
166 0000011B 00 <1> db 0x00 ;base 31:24
|
|
167 <1> gdt_end:
|
|
168 <1>
|
|
169 <1>
|
|
170 <1>
|
|
171 %include "idt.inc"
|
|
172 <1> ;idt.inc
|
|
173 <1> ;Author: Josh Holtrop
|
|
174 <1> ;for HOS
|
|
175 <1> ;Modified: 10/30/03
|
|
176 <1>
|
|
177 <1> idtr:
|
|
178 0000011C 8F01 <1> dw 50*8-1 ;size of idt
|
|
179 0000011E 00201000 <1> dd IDT_P ;address of idt
|
|
180 <1>
|
|
181 <1>
|
|
182 <1> %macro isr_label 1
|
|
183 <1> isr_%1:
|
|
184 <1> push eax
|
|
185 <1> mov eax, %1
|
|
186 <1> jmp isr_main
|
|
187 <1> %endmacro
|
|
188 <1>
|
|
189 <1> isr_label 0
|
|
190 <2> isr_%1:
|
|
191 00000122 50 <2> push eax
|
|
192 00000123 B800000000 <2> mov eax, %1
|
|
193 00000128 E91B020000 <2> jmp isr_main
|
|
194 <1> isr_label 1
|
|
195 <2> isr_%1:
|
|
196 0000012D 50 <2> push eax
|
|
197 0000012E B801000000 <2> mov eax, %1
|
|
198 00000133 E910020000 <2> jmp isr_main
|
|
199 <1> isr_label 2
|
|
200 <2> isr_%1:
|
|
201 00000138 50 <2> push eax
|
|
202 00000139 B802000000 <2> mov eax, %1
|
|
203 0000013E E905020000 <2> jmp isr_main
|
|
204 <1> isr_label 3
|
|
205 <2> isr_%1:
|
|
206 00000143 50 <2> push eax
|
|
207 00000144 B803000000 <2> mov eax, %1
|
|
208 00000149 E9FA010000 <2> jmp isr_main
|
|
209 <1> isr_label 4
|
|
210 <2> isr_%1:
|
|
211 0000014E 50 <2> push eax
|
|
212 0000014F B804000000 <2> mov eax, %1
|
|
213 00000154 E9EF010000 <2> jmp isr_main
|
|
214 <1> isr_label 5
|
|
215 <2> isr_%1:
|
|
216 00000159 50 <2> push eax
|
|
217 0000015A B805000000 <2> mov eax, %1
|
|
218 0000015F E9E4010000 <2> jmp isr_main
|
|
219 <1> isr_label 6
|
|
220 <2> isr_%1:
|
|
221 00000164 50 <2> push eax
|
|
222 00000165 B806000000 <2> mov eax, %1
|
|
223 0000016A E9D9010000 <2> jmp isr_main
|
|
224 <1> isr_label 7
|
|
225 <2> isr_%1:
|
|
226 0000016F 50 <2> push eax
|
|
227 00000170 B807000000 <2> mov eax, %1
|
|
228 00000175 E9CE010000 <2> jmp isr_main
|
|
229 <1> isr_label 8
|
|
230 <2> isr_%1:
|
|
231 0000017A 50 <2> push eax
|
|
232 0000017B B808000000 <2> mov eax, %1
|
|
233 00000180 E9C3010000 <2> jmp isr_main
|
|
234 <1> isr_label 9
|
|
235 <2> isr_%1:
|
|
236 00000185 50 <2> push eax
|
|
237 00000186 B809000000 <2> mov eax, %1
|
|
238 0000018B E9B8010000 <2> jmp isr_main
|
|
239 <1> isr_label 10
|
|
240 <2> isr_%1:
|
|
241 00000190 50 <2> push eax
|
|
242 00000191 B80A000000 <2> mov eax, %1
|
|
243 00000196 E9AD010000 <2> jmp isr_main
|
|
244 <1> isr_label 11
|
|
245 <2> isr_%1:
|
|
246 0000019B 50 <2> push eax
|
|
247 0000019C B80B000000 <2> mov eax, %1
|
|
248 000001A1 E9A2010000 <2> jmp isr_main
|
|
249 <1> isr_label 12
|
|
250 <2> isr_%1:
|
|
251 000001A6 50 <2> push eax
|
|
252 000001A7 B80C000000 <2> mov eax, %1
|
|
253 000001AC E997010000 <2> jmp isr_main
|
|
254 <1> isr_label 13
|
|
255 <2> isr_%1:
|
|
256 000001B1 50 <2> push eax
|
|
257 000001B2 B80D000000 <2> mov eax, %1
|
|
258 000001B7 E98C010000 <2> jmp isr_main
|
|
259 <1> isr_label 14
|
|
260 <2> isr_%1:
|
|
261 000001BC 50 <2> push eax
|
|
262 000001BD B80E000000 <2> mov eax, %1
|
|
263 000001C2 E981010000 <2> jmp isr_main
|
|
264 <1> isr_label 15
|
|
265 <2> isr_%1:
|
|
266 000001C7 50 <2> push eax
|
|
267 000001C8 B80F000000 <2> mov eax, %1
|
|
268 000001CD E976010000 <2> jmp isr_main
|
|
269 <1> isr_label 16
|
|
270 <2> isr_%1:
|
|
271 000001D2 50 <2> push eax
|
|
272 000001D3 B810000000 <2> mov eax, %1
|
|
273 000001D8 E96B010000 <2> jmp isr_main
|
|
274 <1> isr_label 17
|
|
275 <2> isr_%1:
|
|
276 000001DD 50 <2> push eax
|
|
277 000001DE B811000000 <2> mov eax, %1
|
|
278 000001E3 E960010000 <2> jmp isr_main
|
|
279 <1> isr_label 18
|
|
280 <2> isr_%1:
|
|
281 000001E8 50 <2> push eax
|
|
282 000001E9 B812000000 <2> mov eax, %1
|
|
283 000001EE E955010000 <2> jmp isr_main
|
|
284 <1> isr_label 19
|
|
285 <2> isr_%1:
|
|
286 000001F3 50 <2> push eax
|
|
287 000001F4 B813000000 <2> mov eax, %1
|
|
288 000001F9 E94A010000 <2> jmp isr_main
|
|
289 <1> isr_label 20
|
|
290 <2> isr_%1:
|
|
291 000001FE 50 <2> push eax
|
|
292 000001FF B814000000 <2> mov eax, %1
|
|
293 00000204 E93F010000 <2> jmp isr_main
|
|
294 <1> isr_label 21
|
|
295 <2> isr_%1:
|
|
296 00000209 50 <2> push eax
|
|
297 0000020A B815000000 <2> mov eax, %1
|
|
298 0000020F E934010000 <2> jmp isr_main
|
|
299 <1> isr_label 22
|
|
300 <2> isr_%1:
|
|
301 00000214 50 <2> push eax
|
|
302 00000215 B816000000 <2> mov eax, %1
|
|
303 0000021A E929010000 <2> jmp isr_main
|
|
304 <1> isr_label 23
|
|
305 <2> isr_%1:
|
|
306 0000021F 50 <2> push eax
|
|
307 00000220 B817000000 <2> mov eax, %1
|
|
308 00000225 E91E010000 <2> jmp isr_main
|
|
309 <1> isr_label 24
|
|
310 <2> isr_%1:
|
|
311 0000022A 50 <2> push eax
|
|
312 0000022B B818000000 <2> mov eax, %1
|
|
313 00000230 E913010000 <2> jmp isr_main
|
|
314 <1> isr_label 25
|
|
315 <2> isr_%1:
|
|
316 00000235 50 <2> push eax
|
|
317 00000236 B819000000 <2> mov eax, %1
|
|
318 0000023B E908010000 <2> jmp isr_main
|
|
319 <1> isr_label 26
|
|
320 <2> isr_%1:
|
|
321 00000240 50 <2> push eax
|
|
322 00000241 B81A000000 <2> mov eax, %1
|
|
323 00000246 E9FD000000 <2> jmp isr_main
|
|
324 <1> isr_label 27
|
|
325 <2> isr_%1:
|
|
326 0000024B 50 <2> push eax
|
|
327 0000024C B81B000000 <2> mov eax, %1
|
|
328 00000251 E9F2000000 <2> jmp isr_main
|
|
329 <1> isr_label 28
|
|
330 <2> isr_%1:
|
|
331 00000256 50 <2> push eax
|
|
332 00000257 B81C000000 <2> mov eax, %1
|
|
333 0000025C E9E7000000 <2> jmp isr_main
|
|
334 <1> isr_label 29
|
|
335 <2> isr_%1:
|
|
336 00000261 50 <2> push eax
|
|
337 00000262 B81D000000 <2> mov eax, %1
|
|
338 00000267 E9DC000000 <2> jmp isr_main
|
|
339 <1> isr_label 30
|
|
340 <2> isr_%1:
|
|
341 0000026C 50 <2> push eax
|
|
342 0000026D B81E000000 <2> mov eax, %1
|
|
343 00000272 E9D1000000 <2> jmp isr_main
|
|
344 <1> isr_label 31
|
|
345 <2> isr_%1:
|
|
346 00000277 50 <2> push eax
|
|
347 00000278 B81F000000 <2> mov eax, %1
|
|
348 0000027D E9C6000000 <2> jmp isr_main
|
|
349 <1> isr_label 32
|
|
350 <2> isr_%1:
|
|
351 00000282 50 <2> push eax
|
|
352 00000283 B820000000 <2> mov eax, %1
|
|
353 00000288 E9BB000000 <2> jmp isr_main
|
|
354 <1> isr_label 33
|
|
355 <2> isr_%1:
|
|
356 0000028D 50 <2> push eax
|
|
357 0000028E B821000000 <2> mov eax, %1
|
|
358 00000293 E9B0000000 <2> jmp isr_main
|
|
359 <1> isr_label 34
|
|
360 <2> isr_%1:
|
|
361 00000298 50 <2> push eax
|
|
362 00000299 B822000000 <2> mov eax, %1
|
|
363 0000029E E9A5000000 <2> jmp isr_main
|
|
364 <1> isr_label 35
|
|
365 <2> isr_%1:
|
|
366 000002A3 50 <2> push eax
|
|
367 000002A4 B823000000 <2> mov eax, %1
|
|
368 000002A9 E99A000000 <2> jmp isr_main
|
|
369 <1> isr_label 36
|
|
370 <2> isr_%1:
|
|
371 000002AE 50 <2> push eax
|
|
372 000002AF B824000000 <2> mov eax, %1
|
|
373 000002B4 E98F000000 <2> jmp isr_main
|
|
374 <1> isr_label 37
|
|
375 <2> isr_%1:
|
|
376 000002B9 50 <2> push eax
|
|
377 000002BA B825000000 <2> mov eax, %1
|
|
378 000002BF E984000000 <2> jmp isr_main
|
|
379 <1> isr_label 38
|
|
380 <2> isr_%1:
|
|
381 000002C4 50 <2> push eax
|
|
382 000002C5 B826000000 <2> mov eax, %1
|
|
383 000002CA E979000000 <2> jmp isr_main
|
|
384 <1> isr_label 39
|
|
385 <2> isr_%1:
|
|
386 000002CF 50 <2> push eax
|
|
387 000002D0 B827000000 <2> mov eax, %1
|
|
388 000002D5 E96E000000 <2> jmp isr_main
|
|
389 <1> isr_label 40
|
|
390 <2> isr_%1:
|
|
391 000002DA 50 <2> push eax
|
|
392 000002DB B828000000 <2> mov eax, %1
|
|
393 000002E0 E963000000 <2> jmp isr_main
|
|
394 <1> isr_label 41
|
|
395 <2> isr_%1:
|
|
396 000002E5 50 <2> push eax
|
|
397 000002E6 B829000000 <2> mov eax, %1
|
|
398 000002EB E958000000 <2> jmp isr_main
|
|
399 <1> isr_label 42
|
|
400 <2> isr_%1:
|
|
401 000002F0 50 <2> push eax
|
|
402 000002F1 B82A000000 <2> mov eax, %1
|
|
403 000002F6 E94D000000 <2> jmp isr_main
|
|
404 <1> isr_label 43
|
|
405 <2> isr_%1:
|
|
406 000002FB 50 <2> push eax
|
|
407 000002FC B82B000000 <2> mov eax, %1
|
|
408 00000301 E942000000 <2> jmp isr_main
|
|
409 <1> isr_label 44
|
|
410 <2> isr_%1:
|
|
411 00000306 50 <2> push eax
|
|
412 00000307 B82C000000 <2> mov eax, %1
|
|
413 0000030C E937000000 <2> jmp isr_main
|
|
414 <1> isr_label 45
|
|
415 <2> isr_%1:
|
|
416 00000311 50 <2> push eax
|
|
417 00000312 B82D000000 <2> mov eax, %1
|
|
418 00000317 E92C000000 <2> jmp isr_main
|
|
419 <1> isr_label 46
|
|
420 <2> isr_%1:
|
|
421 0000031C 50 <2> push eax
|
|
422 0000031D B82E000000 <2> mov eax, %1
|
|
423 00000322 E921000000 <2> jmp isr_main
|
|
424 <1> isr_label 47
|
|
425 <2> isr_%1:
|
|
426 00000327 50 <2> push eax
|
|
427 00000328 B82F000000 <2> mov eax, %1
|
|
428 0000032D E916000000 <2> jmp isr_main
|
|
429 <1> isr_label 48
|
|
430 <2> isr_%1:
|
|
431 00000332 50 <2> push eax
|
|
432 00000333 B830000000 <2> mov eax, %1
|
|
433 00000338 E90B000000 <2> jmp isr_main
|
|
434 <1> isr_label 49
|
|
435 <2> isr_%1:
|
|
436 0000033D 50 <2> push eax
|
|
437 0000033E B831000000 <2> mov eax, %1
|
|
438 00000343 E900000000 <2> jmp isr_main
|
|
439 <1>
|
|
440 <1> isr_main:
|
|
441 00000348 60 <1> pusha
|
|
442 00000349 1E <1> push ds
|
|
443 0000034A 06 <1> push es
|
|
444 <1>
|
|
445 0000034B 50 <1> push eax
|
|
446 <1>
|
|
447 0000034C E8(00000000) <1> call _isr
|
|
448 <1>
|
|
449 00000351 58 <1> pop eax
|
|
450 <1>
|
|
451 00000352 07 <1> pop es
|
|
452 00000353 1F <1> pop ds
|
|
453 00000354 61 <1> popa
|
|
454 00000355 58 <1> pop eax
|
|
455 <1>
|
|
456 00000356 CF <1> iret
|
|
457 <1>
|
|
458 <1>
|
|
459 <1>
|
|
460 <1>
|
|
461 <1>
|
|
462 <1>
|
|
463 <1>
|
|
464
|
|
465
|