git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@150 6f19259b...
[mirror_edk2.git] / EdkModulePkg / Core / DxeIplPeim / x64 / LongMode.asm
CommitLineData
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
57DataSelectorRld::
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
142go_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
151in_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 ;
189no_long_mode:
190 jmp no_long_mode
191_ActivateLongMode endp
192
193 align 16
194
195gdtr 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
204public GDT_BASE
205GDT_BASE:
206; null descriptor
207NULL_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
216LINEAR_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
225LINEAR_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
234SYS_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
243SYS_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
252SPARE3_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;
263SYS_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;
274SYS_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
283SPARE4_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
291GDT_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
308AsmIdtVector00Base 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
1332AsmIdtVector00Base 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;
1342CommonInterruptEntry PROC NEAR PUBLIC
1343 cli
1344 jmp $
1345 iret
1346
1347CommonInterruptEntry ENDP
1348
1349END
1350