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