]> git.proxmox.com Git - mirror_edk2.git/blame - EdkModulePkg/Core/DxeIplPeim/x64/LongMode.asm
Initial import.
[mirror_edk2.git] / EdkModulePkg / Core / DxeIplPeim / x64 / LongMode.asm
CommitLineData
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
57DataSelectorRld::\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
142go_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
151in_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
196no_long_mode:\r
197 jmp no_long_mode\r
198_ActivateLongMode endp\r
199\r
200 align 16\r
201\r
202gdtr 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
211public GDT_BASE\r
212GDT_BASE:\r
213; null descriptor\r
214NULL_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
223LINEAR_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
232LINEAR_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
241SYS_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
250SYS_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
259SPARE3_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
270SYS_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
281SYS_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
290SPARE4_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
298GDT_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
315AsmIdtVector00Base 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
1339AsmIdtVector00Base 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
1349CommonInterruptEntry PROC NEAR PUBLIC\r
1350 cli\r
1351 jmp $ \r
1352 iret\r
1353\r
1354CommonInterruptEntry ENDP\r
1355\r
1356END\r
1357\r