]>
Commit | Line | Data |
---|---|---|
878ddf1f | 1 | TITLE LongMode.asm: Assembly code for the entering long mode\r |
2 | \r | |
3 | ;------------------------------------------------------------------------------\r | |
4 | ;*\r | |
5 | ;* Copyright (c) 2006, Intel Corporation \r | |
6 | ;* All rights reserved. This program and the accompanying materials \r | |
7 | ;* are licensed and made available under the terms and conditions of the BSD License \r | |
8 | ;* which accompanies this distribution. The full text of the license may be found at \r | |
9 | ;* http://opensource.org/licenses/bsd-license.php \r | |
10 | ;* \r | |
11 | ;* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r | |
12 | ;* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r | |
13 | ;* \r | |
14 | ;* LongMode.asm\r | |
15 | ;* \r | |
16 | ;* Abstract:\r | |
17 | ;*\r | |
18 | ;* Transition from 32-bit protected mode EFI environment into x64 \r | |
19 | ;* 64-bit bit long mode.\r | |
20 | ;* \r | |
21 | ;------------------------------------------------------------------------------\r | |
22 | \r | |
23 | .686p\r | |
24 | .model flat \r | |
25 | \r | |
26 | ;\r | |
27 | ; Create the exception handler code in IA32 C code\r | |
28 | ;\r | |
29 | \r | |
30 | .code\r | |
31 | .stack\r | |
32 | .MMX\r | |
33 | .XMM\r | |
34 | \r | |
35 | _LoadGo64Gdt PROC Near Public\r | |
36 | push ebp ; C prolog\r | |
37 | push edi\r | |
38 | mov ebp, esp\r | |
39 | ;\r | |
40 | ; Disable interrupts\r | |
41 | ;\r | |
42 | cli\r | |
43 | ;\r | |
44 | ; Reload the selectors\r | |
45 | ; Note:\r | |
46 | ; Make the Selectors 64-bit ready\r | |
47 | ;\r | |
48 | mov edi, OFFSET gdtr ; Load GDT register\r | |
49 | mov ax,cs ; Get the selector data from our code image \r | |
50 | mov es,ax\r | |
51 | lgdt FWORD PTR es:[edi] ; and update the GDTR \r | |
52 | \r | |
53 | db 067h\r | |
54 | db 0eah ; Far Jump Offset:Selector to reload CS\r | |
55 | dd OFFSET DataSelectorRld; Offset is ensuing instruction boundary\r | |
56 | dw LINEAR_CODE_SEL ; Selector is our code selector, 10h\r | |
57 | DataSelectorRld::\r | |
58 | mov ax, SYS_DATA_SEL ; Update the Base for the new selectors, too\r | |
59 | mov ds, ax\r | |
60 | mov es, ax\r | |
61 | mov fs, ax\r | |
62 | mov gs, ax\r | |
63 | mov ss, ax \r | |
64 | \r | |
65 | pop edi\r | |
66 | pop ebp\r | |
67 | ret\r | |
68 | _LoadGo64Gdt endp \r | |
69 | \r | |
70 | \r | |
71 | ; VOID\r | |
72 | ; ActivateLongMode (\r | |
73 | ; IN EFI_PHYSICAL_ADDRESS PageTables, \r | |
74 | ; IN EFI_PHYSICAL_ADDRESS HobStart,\r | |
75 | ; IN EFI_PHYSICAL_ADDRESS Stack,\r | |
76 | ; IN EFI_PHYSICAL_ADDRESS PpisNeededByDxeIplEntryPoint,\r | |
77 | ; IN EFI_PHYSICAL_ADDRESS DxeCoreEntryPoint\r | |
78 | ; )\r | |
79 | ;\r | |
80 | ; Input: [ebp][0h] = Original ebp\r | |
81 | ; [ebp][4h] = Return address\r | |
82 | ; [ebp][8h] = PageTables\r | |
83 | ; [ebp][10h] = HobStart\r | |
84 | ; [ebp][18h] = Stack\r | |
85 | ; [ebp][20h] = CodeEntryPoint1 <--- Call this first (for each call, pass HOB pointer)\r | |
86 | ; [ebp][28h] = CodeEntryPoint2 <--- Call this second\r | |
87 | ;\r | |
88 | ;\r | |
89 | _ActivateLongMode PROC Near Public\r | |
90 | push ebp ; C prolog\r | |
91 | mov ebp, esp\r | |
92 | \r | |
93 | ;\r | |
94 | ; Use CPUID to determine if the processor supports long mode.\r | |
95 | ;\r | |
96 | mov eax, 80000000h ; Extended-function code 8000000h.\r | |
97 | cpuid ; Is largest extended function\r | |
98 | cmp eax, 80000000h ; any function > 80000000h?\r | |
99 | jbe no_long_mode ; If not, no long mode.\r | |
100 | mov eax, 80000001h ; Extended-function code 8000001h.\r | |
101 | cpuid ; Now EDX = extended-features flags.\r | |
102 | bt edx, 29 ; Test if long mode is supported.\r | |
103 | jnc no_long_mode ; Exit if not supported.\r | |
104 | \r | |
105 | ;\r | |
106 | ; Enable the 64-bit page-translation-table entries by\r | |
107 | ; setting CR4.PAE=1 (this is _required_ before activating\r | |
108 | ; long mode). Paging is not enabled until after long mode\r | |
109 | ; is enabled.\r | |
110 | ;\r | |
111 | mov eax, cr4\r | |
112 | bts eax, 5\r | |
113 | mov cr4, eax\r | |
114 | \r | |
115 | ;\r | |
116 | ; Get the long-mode page tables, and initialize the\r | |
117 | ; 64-bit CR3 (page-table base address) to point to the base\r | |
118 | ; of the PML4 page table. The PML4 page table must be located\r | |
119 | ; below 4 Gbytes because only 32 bits of CR3 are loaded when\r | |
120 | ; the processor is not in 64-bit mode.\r | |
121 | ;\r | |
122 | mov eax, [ebp+8h] ; Get Page Tables\r | |
123 | mov cr3, eax ; Initialize CR3 with PML4 base.\r | |
124 | \r | |
125 | ;\r | |
126 | ; Enable long mode (set EFER.LME=1).\r | |
127 | ;\r | |
128 | mov ecx, 0c0000080h ; EFER MSR number.\r | |
129 | rdmsr ; Read EFER.\r | |
130 | bts eax, 8 ; Set LME=1.\r | |
131 | wrmsr ; Write EFER.\r | |
132 | \r | |
133 | ;\r | |
134 | ; Enable paging to activate long mode (set CR0.PG=1)\r | |
135 | ;\r | |
136 | \r | |
137 | \r | |
138 | mov eax, cr0 ; Read CR0.\r | |
139 | bts eax, 31 ; Set PG=1.\r | |
140 | mov cr0, eax ; Write CR0.\r | |
141 | jmp go_to_long_mode\r | |
142 | go_to_long_mode:\r | |
143 | \r | |
144 | ;\r | |
145 | ; This is the next instruction after enabling paging. Jump to long mode\r | |
146 | ;\r | |
147 | db 067h\r | |
148 | db 0eah ; Far Jump Offset:Selector to reload CS\r | |
149 | dd OFFSET in_long_mode; Offset is ensuing instruction boundary\r | |
150 | dw SYS_CODE64_SEL ; Selector is our code selector, 10h\r | |
151 | in_long_mode::\r | |
152 | mov ax, SYS_DATA64_SEL\r | |
153 | mov es, ax\r | |
154 | mov ss, ax\r | |
155 | mov ds, ax\r | |
156 | ;; jmp $\r | |
157 | \r | |
158 | \r | |
159 | ;\r | |
160 | ; We're in long mode, so marshall the arguments to call the\r | |
161 | ; passed in function pointers\r | |
162 | ; Recall\r | |
163 | ; [ebp][10h] = HobStart\r | |
164 | ; [ebp][18h] = Stack\r | |
165 | ; [ebp][20h] = PpisNeededByDxeIplEntryPoint <--- Call this first (for each call, pass HOB pointer)\r | |
166 | ; [ebp][28h] = DxeCoreEntryPoint <--- Call this second\r | |
167 | ;\r | |
168 | db 48h\r | |
169 | mov ebx, [ebp+18h] ; Setup the stack\r | |
170 | db 48h\r | |
171 | mov esp, ebx ; On a new stack now\r | |
172 | \r | |
173 | db 48h\r | |
174 | mov ecx, [ebp+10h] ; Pass Hob Start in RCX\r | |
175 | db 48h\r | |
176 | mov eax, [ebp+20h] ; Get the function pointer for \r | |
177 | ; PpisNeededByDxeIplEntryPoint into EAX\r | |
178 | \r | |
179 | ;; 00000905 FF D0 call rax\r | |
180 | db 0ffh\r | |
181 | db 0d0h\r | |
182 | \r | |
183 | db 48h\r | |
184 | mov ecx, [ebp+10h] ; Pass Hob Start in RCX\r | |
185 | db 48h\r | |
186 | mov eax, [ebp+28h] ; Get the function pointer for \r | |
187 | ; DxeCoreEntryPoint into EAX\r | |
188 | \r | |
189 | ;; 00000905 FF D0 call rax\r | |
190 | db 0ffh\r | |
191 | db 0d0h\r | |
192 | \r | |
193 | ;\r | |
194 | ; WE SHOULD NEVER GET HERE!!!!!!!!!!!!!\r | |
195 | ;\r | |
196 | no_long_mode:\r | |
197 | jmp no_long_mode\r | |
198 | _ActivateLongMode endp\r | |
199 | \r | |
200 | align 16\r | |
201 | \r | |
202 | gdtr dw GDT_END - GDT_BASE - 1 ; GDT limit\r | |
203 | dd OFFSET GDT_BASE ; (GDT base gets set above)\r | |
204 | \r | |
205 | ;-----------------------------------------------------------------------------;\r | |
206 | ; global descriptor table (GDT)\r | |
207 | ;-----------------------------------------------------------------------------;\r | |
208 | \r | |
209 | align 16\r | |
210 | \r | |
211 | public GDT_BASE\r | |
212 | GDT_BASE:\r | |
213 | ; null descriptor\r | |
214 | NULL_SEL equ $-GDT_BASE ; Selector [0]\r | |
215 | dw 0 ; limit 15:0\r | |
216 | dw 0 ; base 15:0\r | |
217 | db 0 ; base 23:16\r | |
218 | db 0 ; type\r | |
219 | db 0 ; limit 19:16, flags\r | |
220 | db 0 ; base 31:24\r | |
221 | \r | |
222 | ; linear data segment descriptor\r | |
223 | LINEAR_SEL equ $-GDT_BASE ; Selector [0x8]\r | |
224 | dw 0FFFFh ; limit 0xFFFFF\r | |
225 | dw 0 ; base 0\r | |
226 | db 0\r | |
227 | db 092h ; present, ring 0, data, expand-up, writable\r | |
228 | db 0CFh ; page-granular, 32-bit\r | |
229 | db 0\r | |
230 | \r | |
231 | ; linear code segment descriptor\r | |
232 | LINEAR_CODE_SEL equ $-GDT_BASE ; Selector [0x10]\r | |
233 | dw 0FFFFh ; limit 0xFFFFF\r | |
234 | dw 0 ; base 0\r | |
235 | db 0\r | |
236 | db 09Fh ; present, ring 0, data, expand-up, writable\r | |
237 | db 0CFh ; page-granular, 32-bit\r | |
238 | db 0\r | |
239 | \r | |
240 | ; system data segment descriptor\r | |
241 | SYS_DATA_SEL equ $-GDT_BASE ; Selector [0x18]\r | |
242 | dw 0FFFFh ; limit 0xFFFFF\r | |
243 | dw 0 ; base 0\r | |
244 | db 0\r | |
245 | db 093h ; present, ring 0, data, expand-up, writable\r | |
246 | db 0CFh ; page-granular, 32-bit\r | |
247 | db 0\r | |
248 | \r | |
249 | ; system code segment descriptor\r | |
250 | SYS_CODE_SEL equ $-GDT_BASE ; Selector [0x20]\r | |
251 | dw 0FFFFh ; limit 0xFFFFF\r | |
252 | dw 0 ; base 0\r | |
253 | db 0\r | |
254 | db 09Ah ; present, ring 0, data, expand-up, writable\r | |
255 | db 0CFh ; page-granular, 32-bit\r | |
256 | db 0\r | |
257 | \r | |
258 | ; spare segment descriptor\r | |
259 | SPARE3_SEL equ $-GDT_BASE ; Selector [0x28]\r | |
260 | dw 0 ; limit 0xFFFFF\r | |
261 | dw 0 ; base 0\r | |
262 | db 0\r | |
263 | db 0 ; present, ring 0, data, expand-up, writable\r | |
264 | db 0 ; page-granular, 32-bit\r | |
265 | db 0\r | |
266 | \r | |
267 | ;\r | |
268 | ; system data segment descriptor\r | |
269 | ;\r | |
270 | SYS_DATA64_SEL equ $-GDT_BASE ; Selector [0x30]\r | |
271 | dw 0FFFFh ; limit 0xFFFFF\r | |
272 | dw 0 ; base 0\r | |
273 | db 0\r | |
274 | db 092h ; P | DPL [1..2] | 1 | 1 | C | R | A\r | |
275 | db 0CFh ; G | D | L | AVL | Segment [19..16]\r | |
276 | db 0\r | |
277 | \r | |
278 | ;\r | |
279 | ; system code segment descriptor\r | |
280 | ;\r | |
281 | SYS_CODE64_SEL equ $-GDT_BASE ; Selector [0x38]\r | |
282 | dw 0FFFFh ; limit 0xFFFFF\r | |
283 | dw 0 ; base 0\r | |
284 | db 0\r | |
285 | db 09Ah ; P | DPL [1..2] | 1 | 1 | C | R | A\r | |
286 | db 0AFh ; G | D | L | AVL | Segment [19..16]\r | |
287 | db 0\r | |
288 | \r | |
289 | ; spare segment descriptor\r | |
290 | SPARE4_SEL equ $-GDT_BASE ; Selector [0x40]\r | |
291 | dw 0 ; limit 0xFFFFF\r | |
292 | dw 0 ; base 0\r | |
293 | db 0\r | |
294 | db 0 ; present, ring 0, data, expand-up, writable\r | |
295 | db 0 ; page-granular, 32-bit\r | |
296 | db 0\r | |
297 | \r | |
298 | GDT_END:\r | |
299 | \r | |
300 | ;\r | |
301 | ;\r | |
302 | ;------------------------------------------------------------------------------\r | |
303 | ; Generic IDT Vector Handlers for the Host. They are all the same so they\r | |
304 | ; will compress really well.\r | |
305 | ;\r | |
306 | ; By knowing the return address for Vector 00 you can can calculate the\r | |
307 | ; vector number by looking at the call CommonInterruptEntry return address.\r | |
308 | ; (return address - AsmIdtVector00Base)/8 == IDT index\r | |
309 | ;\r | |
310 | ;------------------------------------------------------------------------------\r | |
311 | \r | |
312 | _AsmIdtVector00 PROC NEAR PUBLIC\r | |
313 | call CommonInterruptEntry\r | |
314 | _AsmIdtVector00 ENDP\r | |
315 | AsmIdtVector00Base PROC NEAR PUBLIC\r | |
316 | nop\r | |
317 | nop\r | |
318 | nop\r | |
319 | call CommonInterruptEntry\r | |
320 | nop\r | |
321 | nop\r | |
322 | nop\r | |
323 | call CommonInterruptEntry\r | |
324 | nop\r | |
325 | nop\r | |
326 | nop\r | |
327 | call CommonInterruptEntry\r | |
328 | nop\r | |
329 | nop\r | |
330 | nop\r | |
331 | call CommonInterruptEntry\r | |
332 | nop\r | |
333 | nop\r | |
334 | nop\r | |
335 | call CommonInterruptEntry\r | |
336 | nop\r | |
337 | nop\r | |
338 | nop\r | |
339 | call CommonInterruptEntry\r | |
340 | nop\r | |
341 | nop\r | |
342 | nop\r | |
343 | call CommonInterruptEntry\r | |
344 | nop\r | |
345 | nop\r | |
346 | nop\r | |
347 | call CommonInterruptEntry\r | |
348 | nop\r | |
349 | nop\r | |
350 | nop\r | |
351 | call CommonInterruptEntry\r | |
352 | nop\r | |
353 | nop\r | |
354 | nop\r | |
355 | call CommonInterruptEntry\r | |
356 | nop\r | |
357 | nop\r | |
358 | nop\r | |
359 | call CommonInterruptEntry\r | |
360 | nop\r | |
361 | nop\r | |
362 | nop\r | |
363 | call CommonInterruptEntry\r | |
364 | nop\r | |
365 | nop\r | |
366 | nop\r | |
367 | call CommonInterruptEntry\r | |
368 | nop\r | |
369 | nop\r | |
370 | nop\r | |
371 | call CommonInterruptEntry\r | |
372 | nop\r | |
373 | nop\r | |
374 | nop\r | |
375 | call CommonInterruptEntry\r | |
376 | nop\r | |
377 | nop\r | |
378 | nop\r | |
379 | call CommonInterruptEntry\r | |
380 | nop\r | |
381 | nop\r | |
382 | nop\r | |
383 | call CommonInterruptEntry\r | |
384 | nop\r | |
385 | nop\r | |
386 | nop\r | |
387 | call CommonInterruptEntry\r | |
388 | nop\r | |
389 | nop\r | |
390 | nop\r | |
391 | call CommonInterruptEntry\r | |
392 | nop\r | |
393 | nop\r | |
394 | nop\r | |
395 | call CommonInterruptEntry\r | |
396 | nop\r | |
397 | nop\r | |
398 | nop\r | |
399 | call CommonInterruptEntry\r | |
400 | nop\r | |
401 | nop\r | |
402 | nop\r | |
403 | call CommonInterruptEntry\r | |
404 | nop\r | |
405 | nop\r | |
406 | nop\r | |
407 | call CommonInterruptEntry\r | |
408 | nop\r | |
409 | nop\r | |
410 | nop\r | |
411 | call CommonInterruptEntry\r | |
412 | nop\r | |
413 | nop\r | |
414 | nop\r | |
415 | call CommonInterruptEntry\r | |
416 | nop\r | |
417 | nop\r | |
418 | nop\r | |
419 | call CommonInterruptEntry\r | |
420 | nop\r | |
421 | nop\r | |
422 | nop\r | |
423 | call CommonInterruptEntry\r | |
424 | nop\r | |
425 | nop\r | |
426 | nop\r | |
427 | call CommonInterruptEntry\r | |
428 | nop\r | |
429 | nop\r | |
430 | nop\r | |
431 | call CommonInterruptEntry\r | |
432 | nop\r | |
433 | nop\r | |
434 | nop\r | |
435 | call CommonInterruptEntry\r | |
436 | nop\r | |
437 | nop\r | |
438 | nop\r | |
439 | call CommonInterruptEntry\r | |
440 | nop\r | |
441 | nop\r | |
442 | nop\r | |
443 | call CommonInterruptEntry\r | |
444 | nop\r | |
445 | nop\r | |
446 | nop\r | |
447 | call CommonInterruptEntry\r | |
448 | nop\r | |
449 | nop\r | |
450 | nop\r | |
451 | call CommonInterruptEntry\r | |
452 | nop\r | |
453 | nop\r | |
454 | nop\r | |
455 | call CommonInterruptEntry\r | |
456 | nop\r | |
457 | nop\r | |
458 | nop\r | |
459 | call CommonInterruptEntry\r | |
460 | nop\r | |
461 | nop\r | |
462 | nop\r | |
463 | call CommonInterruptEntry\r | |
464 | nop\r | |
465 | nop\r | |
466 | nop\r | |
467 | call CommonInterruptEntry\r | |
468 | nop\r | |
469 | nop\r | |
470 | nop\r | |
471 | call CommonInterruptEntry\r | |
472 | nop\r | |
473 | nop\r | |
474 | nop\r | |
475 | call CommonInterruptEntry\r | |
476 | nop\r | |
477 | nop\r | |
478 | nop\r | |
479 | call CommonInterruptEntry\r | |
480 | nop\r | |
481 | nop\r | |
482 | nop\r | |
483 | call CommonInterruptEntry\r | |
484 | nop\r | |
485 | nop\r | |
486 | nop\r | |
487 | call CommonInterruptEntry\r | |
488 | nop\r | |
489 | nop\r | |
490 | nop\r | |
491 | call CommonInterruptEntry\r | |
492 | nop\r | |
493 | nop\r | |
494 | nop\r | |
495 | call CommonInterruptEntry\r | |
496 | nop\r | |
497 | nop\r | |
498 | nop\r | |
499 | call CommonInterruptEntry\r | |
500 | nop\r | |
501 | nop\r | |
502 | nop\r | |
503 | call CommonInterruptEntry\r | |
504 | nop\r | |
505 | nop\r | |
506 | nop\r | |
507 | call CommonInterruptEntry\r | |
508 | nop\r | |
509 | nop\r | |
510 | nop\r | |
511 | call CommonInterruptEntry\r | |
512 | nop\r | |
513 | nop\r | |
514 | nop\r | |
515 | call CommonInterruptEntry\r | |
516 | nop\r | |
517 | nop\r | |
518 | nop\r | |
519 | call CommonInterruptEntry\r | |
520 | nop\r | |
521 | nop\r | |
522 | nop\r | |
523 | call CommonInterruptEntry\r | |
524 | nop\r | |
525 | nop\r | |
526 | nop\r | |
527 | call CommonInterruptEntry\r | |
528 | nop\r | |
529 | nop\r | |
530 | nop\r | |
531 | call CommonInterruptEntry\r | |
532 | nop\r | |
533 | nop\r | |
534 | nop\r | |
535 | call CommonInterruptEntry\r | |
536 | nop\r | |
537 | nop\r | |
538 | nop\r | |
539 | call CommonInterruptEntry\r | |
540 | nop\r | |
541 | nop\r | |
542 | nop\r | |
543 | call CommonInterruptEntry\r | |
544 | nop\r | |
545 | nop\r | |
546 | nop\r | |
547 | call CommonInterruptEntry\r | |
548 | nop\r | |
549 | nop\r | |
550 | nop\r | |
551 | call CommonInterruptEntry\r | |
552 | nop\r | |
553 | nop\r | |
554 | nop\r | |
555 | call CommonInterruptEntry\r | |
556 | nop\r | |
557 | nop\r | |
558 | nop\r | |
559 | call CommonInterruptEntry\r | |
560 | nop\r | |
561 | nop\r | |
562 | nop\r | |
563 | call CommonInterruptEntry\r | |
564 | nop\r | |
565 | nop\r | |
566 | nop\r | |
567 | call CommonInterruptEntry\r | |
568 | nop\r | |
569 | nop\r | |
570 | nop\r | |
571 | call CommonInterruptEntry\r | |
572 | nop\r | |
573 | nop\r | |
574 | nop\r | |
575 | call CommonInterruptEntry\r | |
576 | nop\r | |
577 | nop\r | |
578 | nop\r | |
579 | call CommonInterruptEntry\r | |
580 | nop\r | |
581 | nop\r | |
582 | nop\r | |
583 | call CommonInterruptEntry\r | |
584 | nop\r | |
585 | nop\r | |
586 | nop\r | |
587 | call CommonInterruptEntry\r | |
588 | nop\r | |
589 | nop\r | |
590 | nop\r | |
591 | call CommonInterruptEntry\r | |
592 | nop\r | |
593 | nop\r | |
594 | nop\r | |
595 | call CommonInterruptEntry\r | |
596 | nop\r | |
597 | nop\r | |
598 | nop\r | |
599 | call CommonInterruptEntry\r | |
600 | nop\r | |
601 | nop\r | |
602 | nop\r | |
603 | call CommonInterruptEntry\r | |
604 | nop\r | |
605 | nop\r | |
606 | nop\r | |
607 | call CommonInterruptEntry\r | |
608 | nop\r | |
609 | nop\r | |
610 | nop\r | |
611 | call CommonInterruptEntry\r | |
612 | nop\r | |
613 | nop\r | |
614 | nop\r | |
615 | call CommonInterruptEntry\r | |
616 | nop\r | |
617 | nop\r | |
618 | nop\r | |
619 | call CommonInterruptEntry\r | |
620 | nop\r | |
621 | nop\r | |
622 | nop\r | |
623 | call CommonInterruptEntry\r | |
624 | nop\r | |
625 | nop\r | |
626 | nop\r | |
627 | call CommonInterruptEntry\r | |
628 | nop\r | |
629 | nop\r | |
630 | nop\r | |
631 | call CommonInterruptEntry\r | |
632 | nop\r | |
633 | nop\r | |
634 | nop\r | |
635 | call CommonInterruptEntry\r | |
636 | nop\r | |
637 | nop\r | |
638 | nop\r | |
639 | call CommonInterruptEntry\r | |
640 | nop\r | |
641 | nop\r | |
642 | nop\r | |
643 | call CommonInterruptEntry\r | |
644 | nop\r | |
645 | nop\r | |
646 | nop\r | |
647 | call CommonInterruptEntry\r | |
648 | nop\r | |
649 | nop\r | |
650 | nop\r | |
651 | call CommonInterruptEntry\r | |
652 | nop\r | |
653 | nop\r | |
654 | nop\r | |
655 | call CommonInterruptEntry\r | |
656 | nop\r | |
657 | nop\r | |
658 | nop\r | |
659 | call CommonInterruptEntry\r | |
660 | nop\r | |
661 | nop\r | |
662 | nop\r | |
663 | call CommonInterruptEntry\r | |
664 | nop\r | |
665 | nop\r | |
666 | nop\r | |
667 | call CommonInterruptEntry\r | |
668 | nop\r | |
669 | nop\r | |
670 | nop\r | |
671 | call CommonInterruptEntry\r | |
672 | nop\r | |
673 | nop\r | |
674 | nop\r | |
675 | call CommonInterruptEntry\r | |
676 | nop\r | |
677 | nop\r | |
678 | nop\r | |
679 | call CommonInterruptEntry\r | |
680 | nop\r | |
681 | nop\r | |
682 | nop\r | |
683 | call CommonInterruptEntry\r | |
684 | nop\r | |
685 | nop\r | |
686 | nop\r | |
687 | call CommonInterruptEntry\r | |
688 | nop\r | |
689 | nop\r | |
690 | nop\r | |
691 | call CommonInterruptEntry\r | |
692 | nop\r | |
693 | nop\r | |
694 | nop\r | |
695 | call CommonInterruptEntry\r | |
696 | nop\r | |
697 | nop\r | |
698 | nop\r | |
699 | call CommonInterruptEntry\r | |
700 | nop\r | |
701 | nop\r | |
702 | nop\r | |
703 | call CommonInterruptEntry\r | |
704 | nop\r | |
705 | nop\r | |
706 | nop\r | |
707 | call CommonInterruptEntry\r | |
708 | nop\r | |
709 | nop\r | |
710 | nop\r | |
711 | call CommonInterruptEntry\r | |
712 | nop\r | |
713 | nop\r | |
714 | nop\r | |
715 | call CommonInterruptEntry\r | |
716 | nop\r | |
717 | nop\r | |
718 | nop\r | |
719 | call CommonInterruptEntry\r | |
720 | nop\r | |
721 | nop\r | |
722 | nop\r | |
723 | call CommonInterruptEntry\r | |
724 | nop\r | |
725 | nop\r | |
726 | nop\r | |
727 | call CommonInterruptEntry\r | |
728 | nop\r | |
729 | nop\r | |
730 | nop\r | |
731 | call CommonInterruptEntry\r | |
732 | nop\r | |
733 | nop\r | |
734 | nop\r | |
735 | call CommonInterruptEntry\r | |
736 | nop\r | |
737 | nop\r | |
738 | nop\r | |
739 | call CommonInterruptEntry\r | |
740 | nop\r | |
741 | nop\r | |
742 | nop\r | |
743 | call CommonInterruptEntry\r | |
744 | nop\r | |
745 | nop\r | |
746 | nop\r | |
747 | call CommonInterruptEntry\r | |
748 | nop\r | |
749 | nop\r | |
750 | nop\r | |
751 | call CommonInterruptEntry\r | |
752 | nop\r | |
753 | nop\r | |
754 | nop\r | |
755 | call CommonInterruptEntry\r | |
756 | nop\r | |
757 | nop\r | |
758 | nop\r | |
759 | call CommonInterruptEntry\r | |
760 | nop\r | |
761 | nop\r | |
762 | nop\r | |
763 | call CommonInterruptEntry\r | |
764 | nop\r | |
765 | nop\r | |
766 | nop\r | |
767 | call CommonInterruptEntry\r | |
768 | nop\r | |
769 | nop\r | |
770 | nop\r | |
771 | call CommonInterruptEntry\r | |
772 | nop\r | |
773 | nop\r | |
774 | nop\r | |
775 | call CommonInterruptEntry\r | |
776 | nop\r | |
777 | nop\r | |
778 | nop\r | |
779 | call CommonInterruptEntry\r | |
780 | nop\r | |
781 | nop\r | |
782 | nop\r | |
783 | call CommonInterruptEntry\r | |
784 | nop\r | |
785 | nop\r | |
786 | nop\r | |
787 | call CommonInterruptEntry\r | |
788 | nop\r | |
789 | nop\r | |
790 | nop\r | |
791 | call CommonInterruptEntry\r | |
792 | nop\r | |
793 | nop\r | |
794 | nop\r | |
795 | call CommonInterruptEntry\r | |
796 | nop\r | |
797 | nop\r | |
798 | nop\r | |
799 | call CommonInterruptEntry\r | |
800 | nop\r | |
801 | nop\r | |
802 | nop\r | |
803 | call CommonInterruptEntry\r | |
804 | nop\r | |
805 | nop\r | |
806 | nop\r | |
807 | call CommonInterruptEntry\r | |
808 | nop\r | |
809 | nop\r | |
810 | nop\r | |
811 | call CommonInterruptEntry\r | |
812 | nop\r | |
813 | nop\r | |
814 | nop\r | |
815 | call CommonInterruptEntry\r | |
816 | nop\r | |
817 | nop\r | |
818 | nop\r | |
819 | call CommonInterruptEntry\r | |
820 | nop\r | |
821 | nop\r | |
822 | nop\r | |
823 | call CommonInterruptEntry\r | |
824 | nop\r | |
825 | nop\r | |
826 | nop\r | |
827 | call CommonInterruptEntry\r | |
828 | nop\r | |
829 | nop\r | |
830 | nop\r | |
831 | call CommonInterruptEntry\r | |
832 | nop\r | |
833 | nop\r | |
834 | nop\r | |
835 | call CommonInterruptEntry\r | |
836 | nop\r | |
837 | nop\r | |
838 | nop\r | |
839 | call CommonInterruptEntry\r | |
840 | nop\r | |
841 | nop\r | |
842 | nop\r | |
843 | call CommonInterruptEntry\r | |
844 | nop\r | |
845 | nop\r | |
846 | nop\r | |
847 | call CommonInterruptEntry\r | |
848 | nop\r | |
849 | nop\r | |
850 | nop\r | |
851 | call CommonInterruptEntry\r | |
852 | nop\r | |
853 | nop\r | |
854 | nop\r | |
855 | call CommonInterruptEntry\r | |
856 | nop\r | |
857 | nop\r | |
858 | nop\r | |
859 | call CommonInterruptEntry\r | |
860 | nop\r | |
861 | nop\r | |
862 | nop\r | |
863 | call CommonInterruptEntry\r | |
864 | nop\r | |
865 | nop\r | |
866 | nop\r | |
867 | call CommonInterruptEntry\r | |
868 | nop\r | |
869 | nop\r | |
870 | nop\r | |
871 | call CommonInterruptEntry\r | |
872 | nop\r | |
873 | nop\r | |
874 | nop\r | |
875 | call CommonInterruptEntry\r | |
876 | nop\r | |
877 | nop\r | |
878 | nop\r | |
879 | call CommonInterruptEntry\r | |
880 | nop\r | |
881 | nop\r | |
882 | nop\r | |
883 | call CommonInterruptEntry\r | |
884 | nop\r | |
885 | nop\r | |
886 | nop\r | |
887 | call CommonInterruptEntry\r | |
888 | nop\r | |
889 | nop\r | |
890 | nop\r | |
891 | call CommonInterruptEntry\r | |
892 | nop\r | |
893 | nop\r | |
894 | nop\r | |
895 | call CommonInterruptEntry\r | |
896 | nop\r | |
897 | nop\r | |
898 | nop\r | |
899 | call CommonInterruptEntry\r | |
900 | nop\r | |
901 | nop\r | |
902 | nop\r | |
903 | call CommonInterruptEntry\r | |
904 | nop\r | |
905 | nop\r | |
906 | nop\r | |
907 | call CommonInterruptEntry\r | |
908 | nop\r | |
909 | nop\r | |
910 | nop\r | |
911 | call CommonInterruptEntry\r | |
912 | nop\r | |
913 | nop\r | |
914 | nop\r | |
915 | call CommonInterruptEntry\r | |
916 | nop\r | |
917 | nop\r | |
918 | nop\r | |
919 | call CommonInterruptEntry\r | |
920 | nop\r | |
921 | nop\r | |
922 | nop\r | |
923 | call CommonInterruptEntry\r | |
924 | nop\r | |
925 | nop\r | |
926 | nop\r | |
927 | call CommonInterruptEntry\r | |
928 | nop\r | |
929 | nop\r | |
930 | nop\r | |
931 | call CommonInterruptEntry\r | |
932 | nop\r | |
933 | nop\r | |
934 | nop\r | |
935 | call CommonInterruptEntry\r | |
936 | nop\r | |
937 | nop\r | |
938 | nop\r | |
939 | call CommonInterruptEntry\r | |
940 | nop\r | |
941 | nop\r | |
942 | nop\r | |
943 | call CommonInterruptEntry\r | |
944 | nop\r | |
945 | nop\r | |
946 | nop\r | |
947 | call CommonInterruptEntry\r | |
948 | nop\r | |
949 | nop\r | |
950 | nop\r | |
951 | call CommonInterruptEntry\r | |
952 | nop\r | |
953 | nop\r | |
954 | nop\r | |
955 | call CommonInterruptEntry\r | |
956 | nop\r | |
957 | nop\r | |
958 | nop\r | |
959 | call CommonInterruptEntry\r | |
960 | nop\r | |
961 | nop\r | |
962 | nop\r | |
963 | call CommonInterruptEntry\r | |
964 | nop\r | |
965 | nop\r | |
966 | nop\r | |
967 | call CommonInterruptEntry\r | |
968 | nop\r | |
969 | nop\r | |
970 | nop\r | |
971 | call CommonInterruptEntry\r | |
972 | nop\r | |
973 | nop\r | |
974 | nop\r | |
975 | call CommonInterruptEntry\r | |
976 | nop\r | |
977 | nop\r | |
978 | nop\r | |
979 | call CommonInterruptEntry\r | |
980 | nop\r | |
981 | nop\r | |
982 | nop\r | |
983 | call CommonInterruptEntry\r | |
984 | nop\r | |
985 | nop\r | |
986 | nop\r | |
987 | call CommonInterruptEntry\r | |
988 | nop\r | |
989 | nop\r | |
990 | nop\r | |
991 | call CommonInterruptEntry\r | |
992 | nop\r | |
993 | nop\r | |
994 | nop\r | |
995 | call CommonInterruptEntry\r | |
996 | nop\r | |
997 | nop\r | |
998 | nop\r | |
999 | call CommonInterruptEntry\r | |
1000 | nop\r | |
1001 | nop\r | |
1002 | nop\r | |
1003 | call CommonInterruptEntry\r | |
1004 | nop\r | |
1005 | nop\r | |
1006 | nop\r | |
1007 | call CommonInterruptEntry\r | |
1008 | nop\r | |
1009 | nop\r | |
1010 | nop\r | |
1011 | call CommonInterruptEntry\r | |
1012 | nop\r | |
1013 | nop\r | |
1014 | nop\r | |
1015 | call CommonInterruptEntry\r | |
1016 | nop\r | |
1017 | nop\r | |
1018 | nop\r | |
1019 | call CommonInterruptEntry\r | |
1020 | nop\r | |
1021 | nop\r | |
1022 | nop\r | |
1023 | call CommonInterruptEntry\r | |
1024 | nop\r | |
1025 | nop\r | |
1026 | nop\r | |
1027 | call CommonInterruptEntry\r | |
1028 | nop\r | |
1029 | nop\r | |
1030 | nop\r | |
1031 | call CommonInterruptEntry\r | |
1032 | nop\r | |
1033 | nop\r | |
1034 | nop\r | |
1035 | call CommonInterruptEntry\r | |
1036 | nop\r | |
1037 | nop\r | |
1038 | nop\r | |
1039 | call CommonInterruptEntry\r | |
1040 | nop\r | |
1041 | nop\r | |
1042 | nop\r | |
1043 | call CommonInterruptEntry\r | |
1044 | nop\r | |
1045 | nop\r | |
1046 | nop\r | |
1047 | call CommonInterruptEntry\r | |
1048 | nop\r | |
1049 | nop\r | |
1050 | nop\r | |
1051 | call CommonInterruptEntry\r | |
1052 | nop\r | |
1053 | nop\r | |
1054 | nop\r | |
1055 | call CommonInterruptEntry\r | |
1056 | nop\r | |
1057 | nop\r | |
1058 | nop\r | |
1059 | call CommonInterruptEntry\r | |
1060 | nop\r | |
1061 | nop\r | |
1062 | nop\r | |
1063 | call CommonInterruptEntry\r | |
1064 | nop\r | |
1065 | nop\r | |
1066 | nop\r | |
1067 | call CommonInterruptEntry\r | |
1068 | nop\r | |
1069 | nop\r | |
1070 | nop\r | |
1071 | call CommonInterruptEntry\r | |
1072 | nop\r | |
1073 | nop\r | |
1074 | nop\r | |
1075 | call CommonInterruptEntry\r | |
1076 | nop\r | |
1077 | nop\r | |
1078 | nop\r | |
1079 | call CommonInterruptEntry\r | |
1080 | nop\r | |
1081 | nop\r | |
1082 | nop\r | |
1083 | call CommonInterruptEntry\r | |
1084 | nop\r | |
1085 | nop\r | |
1086 | nop\r | |
1087 | call CommonInterruptEntry\r | |
1088 | nop\r | |
1089 | nop\r | |
1090 | nop\r | |
1091 | call CommonInterruptEntry\r | |
1092 | nop\r | |
1093 | nop\r | |
1094 | nop\r | |
1095 | call CommonInterruptEntry\r | |
1096 | nop\r | |
1097 | nop\r | |
1098 | nop\r | |
1099 | call CommonInterruptEntry\r | |
1100 | nop\r | |
1101 | nop\r | |
1102 | nop\r | |
1103 | call CommonInterruptEntry\r | |
1104 | nop\r | |
1105 | nop\r | |
1106 | nop\r | |
1107 | call CommonInterruptEntry\r | |
1108 | nop\r | |
1109 | nop\r | |
1110 | nop\r | |
1111 | call CommonInterruptEntry\r | |
1112 | nop\r | |
1113 | nop\r | |
1114 | nop\r | |
1115 | call CommonInterruptEntry\r | |
1116 | nop\r | |
1117 | nop\r | |
1118 | nop\r | |
1119 | call CommonInterruptEntry\r | |
1120 | nop\r | |
1121 | nop\r | |
1122 | nop\r | |
1123 | call CommonInterruptEntry\r | |
1124 | nop\r | |
1125 | nop\r | |
1126 | nop\r | |
1127 | call CommonInterruptEntry\r | |
1128 | nop\r | |
1129 | nop\r | |
1130 | nop\r | |
1131 | call CommonInterruptEntry\r | |
1132 | nop\r | |
1133 | nop\r | |
1134 | nop\r | |
1135 | call CommonInterruptEntry\r | |
1136 | nop\r | |
1137 | nop\r | |
1138 | nop\r | |
1139 | call CommonInterruptEntry\r | |
1140 | nop\r | |
1141 | nop\r | |
1142 | nop\r | |
1143 | call CommonInterruptEntry\r | |
1144 | nop\r | |
1145 | nop\r | |
1146 | nop\r | |
1147 | call CommonInterruptEntry\r | |
1148 | nop\r | |
1149 | nop\r | |
1150 | nop\r | |
1151 | call CommonInterruptEntry\r | |
1152 | nop\r | |
1153 | nop\r | |
1154 | nop\r | |
1155 | call CommonInterruptEntry\r | |
1156 | nop\r | |
1157 | nop\r | |
1158 | nop\r | |
1159 | call CommonInterruptEntry\r | |
1160 | nop\r | |
1161 | nop\r | |
1162 | nop\r | |
1163 | call CommonInterruptEntry\r | |
1164 | nop\r | |
1165 | nop\r | |
1166 | nop\r | |
1167 | call CommonInterruptEntry\r | |
1168 | nop\r | |
1169 | nop\r | |
1170 | nop\r | |
1171 | call CommonInterruptEntry\r | |
1172 | nop\r | |
1173 | nop\r | |
1174 | nop\r | |
1175 | call CommonInterruptEntry\r | |
1176 | nop\r | |
1177 | nop\r | |
1178 | nop\r | |
1179 | call CommonInterruptEntry\r | |
1180 | nop\r | |
1181 | nop\r | |
1182 | nop\r | |
1183 | call CommonInterruptEntry\r | |
1184 | nop\r | |
1185 | nop\r | |
1186 | nop\r | |
1187 | call CommonInterruptEntry\r | |
1188 | nop\r | |
1189 | nop\r | |
1190 | nop\r | |
1191 | call CommonInterruptEntry\r | |
1192 | nop\r | |
1193 | nop\r | |
1194 | nop\r | |
1195 | call CommonInterruptEntry\r | |
1196 | nop\r | |
1197 | nop\r | |
1198 | nop\r | |
1199 | call CommonInterruptEntry\r | |
1200 | nop\r | |
1201 | nop\r | |
1202 | nop\r | |
1203 | call CommonInterruptEntry\r | |
1204 | nop\r | |
1205 | nop\r | |
1206 | nop\r | |
1207 | call CommonInterruptEntry\r | |
1208 | nop\r | |
1209 | nop\r | |
1210 | nop\r | |
1211 | call CommonInterruptEntry\r | |
1212 | nop\r | |
1213 | nop\r | |
1214 | nop\r | |
1215 | call CommonInterruptEntry\r | |
1216 | nop\r | |
1217 | nop\r | |
1218 | nop\r | |
1219 | call CommonInterruptEntry\r | |
1220 | nop\r | |
1221 | nop\r | |
1222 | nop\r | |
1223 | call CommonInterruptEntry\r | |
1224 | nop\r | |
1225 | nop\r | |
1226 | nop\r | |
1227 | call CommonInterruptEntry\r | |
1228 | nop\r | |
1229 | nop\r | |
1230 | nop\r | |
1231 | call CommonInterruptEntry\r | |
1232 | nop\r | |
1233 | nop\r | |
1234 | nop\r | |
1235 | call CommonInterruptEntry\r | |
1236 | nop\r | |
1237 | nop\r | |
1238 | nop\r | |
1239 | call CommonInterruptEntry\r | |
1240 | nop\r | |
1241 | nop\r | |
1242 | nop\r | |
1243 | call CommonInterruptEntry\r | |
1244 | nop\r | |
1245 | nop\r | |
1246 | nop\r | |
1247 | call CommonInterruptEntry\r | |
1248 | nop\r | |
1249 | nop\r | |
1250 | nop\r | |
1251 | call CommonInterruptEntry\r | |
1252 | nop\r | |
1253 | nop\r | |
1254 | nop\r | |
1255 | call CommonInterruptEntry\r | |
1256 | nop\r | |
1257 | nop\r | |
1258 | nop\r | |
1259 | call CommonInterruptEntry\r | |
1260 | nop\r | |
1261 | nop\r | |
1262 | nop\r | |
1263 | call CommonInterruptEntry\r | |
1264 | nop\r | |
1265 | nop\r | |
1266 | nop\r | |
1267 | call CommonInterruptEntry\r | |
1268 | nop\r | |
1269 | nop\r | |
1270 | nop\r | |
1271 | call CommonInterruptEntry\r | |
1272 | nop\r | |
1273 | nop\r | |
1274 | nop\r | |
1275 | call CommonInterruptEntry\r | |
1276 | nop\r | |
1277 | nop\r | |
1278 | nop\r | |
1279 | call CommonInterruptEntry\r | |
1280 | nop\r | |
1281 | nop\r | |
1282 | nop\r | |
1283 | call CommonInterruptEntry\r | |
1284 | nop\r | |
1285 | nop\r | |
1286 | nop\r | |
1287 | call CommonInterruptEntry\r | |
1288 | nop\r | |
1289 | nop\r | |
1290 | nop\r | |
1291 | call CommonInterruptEntry\r | |
1292 | nop\r | |
1293 | nop\r | |
1294 | nop\r | |
1295 | call CommonInterruptEntry\r | |
1296 | nop\r | |
1297 | nop\r | |
1298 | nop\r | |
1299 | call CommonInterruptEntry\r | |
1300 | nop\r | |
1301 | nop\r | |
1302 | nop\r | |
1303 | call CommonInterruptEntry\r | |
1304 | nop\r | |
1305 | nop\r | |
1306 | nop\r | |
1307 | call CommonInterruptEntry\r | |
1308 | nop\r | |
1309 | nop\r | |
1310 | nop\r | |
1311 | call CommonInterruptEntry\r | |
1312 | nop\r | |
1313 | nop\r | |
1314 | nop\r | |
1315 | call CommonInterruptEntry\r | |
1316 | nop\r | |
1317 | nop\r | |
1318 | nop\r | |
1319 | call CommonInterruptEntry\r | |
1320 | nop\r | |
1321 | nop\r | |
1322 | nop\r | |
1323 | call CommonInterruptEntry\r | |
1324 | nop\r | |
1325 | nop\r | |
1326 | nop\r | |
1327 | call CommonInterruptEntry\r | |
1328 | nop\r | |
1329 | nop\r | |
1330 | nop\r | |
1331 | call CommonInterruptEntry\r | |
1332 | nop\r | |
1333 | nop\r | |
1334 | nop\r | |
1335 | call CommonInterruptEntry\r | |
1336 | nop\r | |
1337 | nop\r | |
1338 | nop\r | |
1339 | AsmIdtVector00Base ENDP\r | |
1340 | \r | |
1341 | \r | |
1342 | ;---------------------------------------;\r | |
1343 | ; CommonInterruptEntry ;\r | |
1344 | ;---------------------------------------;\r | |
1345 | ; The follow algorithm is used for the common interrupt routine.\r | |
1346 | ; TBD: Save EFI_SYSTEM_CONTEXT_x64 on the stack per AP definition\r | |
1347 | ;\r | |
1348 | ;\r | |
1349 | CommonInterruptEntry PROC NEAR PUBLIC\r | |
1350 | cli\r | |
1351 | jmp $ \r | |
1352 | iret\r | |
1353 | \r | |
1354 | CommonInterruptEntry ENDP\r | |
1355 | \r | |
1356 | END\r | |
1357 | \r |