a9c4e774cf9993c8ee6eb384d8f1f3fbe700f58d
[mirror_edk2.git] / EdkModulePkg / Core / DxeIplPeim / x64 / LongMode.asm
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 db 48h
174 mov ecx, [ebp+10h] ; Pass Hob Start in RCX
175 db 48h
176 mov eax, [ebp+20h] ; Get the function pointer for
177 ; PpisNeededByDxeIplEntryPoint into EAX
178
179 ;; 00000905 FF D0 call rax
180 db 0ffh
181 db 0d0h
182
183 db 48h
184 mov ecx, [ebp+10h] ; Pass Hob Start in RCX
185 db 48h
186 mov eax, [ebp+28h] ; Get the function pointer for
187 ; DxeCoreEntryPoint into EAX
188
189 ;; 00000905 FF D0 call rax
190 db 0ffh
191 db 0d0h
192
193 ;
194 ; WE SHOULD NEVER GET HERE!!!!!!!!!!!!!
195 ;
196 no_long_mode:
197 jmp no_long_mode
198 _ActivateLongMode endp
199
200 align 16
201
202 gdtr dw GDT_END - GDT_BASE - 1 ; GDT limit
203 dd OFFSET GDT_BASE ; (GDT base gets set above)
204
205 ;-----------------------------------------------------------------------------;
206 ; global descriptor table (GDT)
207 ;-----------------------------------------------------------------------------;
208
209 align 16
210
211 public GDT_BASE
212 GDT_BASE:
213 ; null descriptor
214 NULL_SEL equ $-GDT_BASE ; Selector [0]
215 dw 0 ; limit 15:0
216 dw 0 ; base 15:0
217 db 0 ; base 23:16
218 db 0 ; type
219 db 0 ; limit 19:16, flags
220 db 0 ; base 31:24
221
222 ; linear data segment descriptor
223 LINEAR_SEL equ $-GDT_BASE ; Selector [0x8]
224 dw 0FFFFh ; limit 0xFFFFF
225 dw 0 ; base 0
226 db 0
227 db 092h ; present, ring 0, data, expand-up, writable
228 db 0CFh ; page-granular, 32-bit
229 db 0
230
231 ; linear code segment descriptor
232 LINEAR_CODE_SEL equ $-GDT_BASE ; Selector [0x10]
233 dw 0FFFFh ; limit 0xFFFFF
234 dw 0 ; base 0
235 db 0
236 db 09Fh ; present, ring 0, data, expand-up, writable
237 db 0CFh ; page-granular, 32-bit
238 db 0
239
240 ; system data segment descriptor
241 SYS_DATA_SEL equ $-GDT_BASE ; Selector [0x18]
242 dw 0FFFFh ; limit 0xFFFFF
243 dw 0 ; base 0
244 db 0
245 db 093h ; present, ring 0, data, expand-up, writable
246 db 0CFh ; page-granular, 32-bit
247 db 0
248
249 ; system code segment descriptor
250 SYS_CODE_SEL equ $-GDT_BASE ; Selector [0x20]
251 dw 0FFFFh ; limit 0xFFFFF
252 dw 0 ; base 0
253 db 0
254 db 09Ah ; present, ring 0, data, expand-up, writable
255 db 0CFh ; page-granular, 32-bit
256 db 0
257
258 ; spare segment descriptor
259 SPARE3_SEL equ $-GDT_BASE ; Selector [0x28]
260 dw 0 ; limit 0xFFFFF
261 dw 0 ; base 0
262 db 0
263 db 0 ; present, ring 0, data, expand-up, writable
264 db 0 ; page-granular, 32-bit
265 db 0
266
267 ;
268 ; system data segment descriptor
269 ;
270 SYS_DATA64_SEL equ $-GDT_BASE ; Selector [0x30]
271 dw 0FFFFh ; limit 0xFFFFF
272 dw 0 ; base 0
273 db 0
274 db 092h ; P | DPL [1..2] | 1 | 1 | C | R | A
275 db 0CFh ; G | D | L | AVL | Segment [19..16]
276 db 0
277
278 ;
279 ; system code segment descriptor
280 ;
281 SYS_CODE64_SEL equ $-GDT_BASE ; Selector [0x38]
282 dw 0FFFFh ; limit 0xFFFFF
283 dw 0 ; base 0
284 db 0
285 db 09Ah ; P | DPL [1..2] | 1 | 1 | C | R | A
286 db 0AFh ; G | D | L | AVL | Segment [19..16]
287 db 0
288
289 ; spare segment descriptor
290 SPARE4_SEL equ $-GDT_BASE ; Selector [0x40]
291 dw 0 ; limit 0xFFFFF
292 dw 0 ; base 0
293 db 0
294 db 0 ; present, ring 0, data, expand-up, writable
295 db 0 ; page-granular, 32-bit
296 db 0
297
298 GDT_END:
299
300 ;
301 ;
302 ;------------------------------------------------------------------------------
303 ; Generic IDT Vector Handlers for the Host. They are all the same so they
304 ; will compress really well.
305 ;
306 ; By knowing the return address for Vector 00 you can can calculate the
307 ; vector number by looking at the call CommonInterruptEntry return address.
308 ; (return address - AsmIdtVector00Base)/8 == IDT index
309 ;
310 ;------------------------------------------------------------------------------
311
312 _AsmIdtVector00 PROC NEAR PUBLIC
313 call CommonInterruptEntry
314 _AsmIdtVector00 ENDP
315 AsmIdtVector00Base PROC NEAR PUBLIC
316 nop
317 nop
318 nop
319 call CommonInterruptEntry
320 nop
321 nop
322 nop
323 call CommonInterruptEntry
324 nop
325 nop
326 nop
327 call CommonInterruptEntry
328 nop
329 nop
330 nop
331 call CommonInterruptEntry
332 nop
333 nop
334 nop
335 call CommonInterruptEntry
336 nop
337 nop
338 nop
339 call CommonInterruptEntry
340 nop
341 nop
342 nop
343 call CommonInterruptEntry
344 nop
345 nop
346 nop
347 call CommonInterruptEntry
348 nop
349 nop
350 nop
351 call CommonInterruptEntry
352 nop
353 nop
354 nop
355 call CommonInterruptEntry
356 nop
357 nop
358 nop
359 call CommonInterruptEntry
360 nop
361 nop
362 nop
363 call CommonInterruptEntry
364 nop
365 nop
366 nop
367 call CommonInterruptEntry
368 nop
369 nop
370 nop
371 call CommonInterruptEntry
372 nop
373 nop
374 nop
375 call CommonInterruptEntry
376 nop
377 nop
378 nop
379 call CommonInterruptEntry
380 nop
381 nop
382 nop
383 call CommonInterruptEntry
384 nop
385 nop
386 nop
387 call CommonInterruptEntry
388 nop
389 nop
390 nop
391 call CommonInterruptEntry
392 nop
393 nop
394 nop
395 call CommonInterruptEntry
396 nop
397 nop
398 nop
399 call CommonInterruptEntry
400 nop
401 nop
402 nop
403 call CommonInterruptEntry
404 nop
405 nop
406 nop
407 call CommonInterruptEntry
408 nop
409 nop
410 nop
411 call CommonInterruptEntry
412 nop
413 nop
414 nop
415 call CommonInterruptEntry
416 nop
417 nop
418 nop
419 call CommonInterruptEntry
420 nop
421 nop
422 nop
423 call CommonInterruptEntry
424 nop
425 nop
426 nop
427 call CommonInterruptEntry
428 nop
429 nop
430 nop
431 call CommonInterruptEntry
432 nop
433 nop
434 nop
435 call CommonInterruptEntry
436 nop
437 nop
438 nop
439 call CommonInterruptEntry
440 nop
441 nop
442 nop
443 call CommonInterruptEntry
444 nop
445 nop
446 nop
447 call CommonInterruptEntry
448 nop
449 nop
450 nop
451 call CommonInterruptEntry
452 nop
453 nop
454 nop
455 call CommonInterruptEntry
456 nop
457 nop
458 nop
459 call CommonInterruptEntry
460 nop
461 nop
462 nop
463 call CommonInterruptEntry
464 nop
465 nop
466 nop
467 call CommonInterruptEntry
468 nop
469 nop
470 nop
471 call CommonInterruptEntry
472 nop
473 nop
474 nop
475 call CommonInterruptEntry
476 nop
477 nop
478 nop
479 call CommonInterruptEntry
480 nop
481 nop
482 nop
483 call CommonInterruptEntry
484 nop
485 nop
486 nop
487 call CommonInterruptEntry
488 nop
489 nop
490 nop
491 call CommonInterruptEntry
492 nop
493 nop
494 nop
495 call CommonInterruptEntry
496 nop
497 nop
498 nop
499 call CommonInterruptEntry
500 nop
501 nop
502 nop
503 call CommonInterruptEntry
504 nop
505 nop
506 nop
507 call CommonInterruptEntry
508 nop
509 nop
510 nop
511 call CommonInterruptEntry
512 nop
513 nop
514 nop
515 call CommonInterruptEntry
516 nop
517 nop
518 nop
519 call CommonInterruptEntry
520 nop
521 nop
522 nop
523 call CommonInterruptEntry
524 nop
525 nop
526 nop
527 call CommonInterruptEntry
528 nop
529 nop
530 nop
531 call CommonInterruptEntry
532 nop
533 nop
534 nop
535 call CommonInterruptEntry
536 nop
537 nop
538 nop
539 call CommonInterruptEntry
540 nop
541 nop
542 nop
543 call CommonInterruptEntry
544 nop
545 nop
546 nop
547 call CommonInterruptEntry
548 nop
549 nop
550 nop
551 call CommonInterruptEntry
552 nop
553 nop
554 nop
555 call CommonInterruptEntry
556 nop
557 nop
558 nop
559 call CommonInterruptEntry
560 nop
561 nop
562 nop
563 call CommonInterruptEntry
564 nop
565 nop
566 nop
567 call CommonInterruptEntry
568 nop
569 nop
570 nop
571 call CommonInterruptEntry
572 nop
573 nop
574 nop
575 call CommonInterruptEntry
576 nop
577 nop
578 nop
579 call CommonInterruptEntry
580 nop
581 nop
582 nop
583 call CommonInterruptEntry
584 nop
585 nop
586 nop
587 call CommonInterruptEntry
588 nop
589 nop
590 nop
591 call CommonInterruptEntry
592 nop
593 nop
594 nop
595 call CommonInterruptEntry
596 nop
597 nop
598 nop
599 call CommonInterruptEntry
600 nop
601 nop
602 nop
603 call CommonInterruptEntry
604 nop
605 nop
606 nop
607 call CommonInterruptEntry
608 nop
609 nop
610 nop
611 call CommonInterruptEntry
612 nop
613 nop
614 nop
615 call CommonInterruptEntry
616 nop
617 nop
618 nop
619 call CommonInterruptEntry
620 nop
621 nop
622 nop
623 call CommonInterruptEntry
624 nop
625 nop
626 nop
627 call CommonInterruptEntry
628 nop
629 nop
630 nop
631 call CommonInterruptEntry
632 nop
633 nop
634 nop
635 call CommonInterruptEntry
636 nop
637 nop
638 nop
639 call CommonInterruptEntry
640 nop
641 nop
642 nop
643 call CommonInterruptEntry
644 nop
645 nop
646 nop
647 call CommonInterruptEntry
648 nop
649 nop
650 nop
651 call CommonInterruptEntry
652 nop
653 nop
654 nop
655 call CommonInterruptEntry
656 nop
657 nop
658 nop
659 call CommonInterruptEntry
660 nop
661 nop
662 nop
663 call CommonInterruptEntry
664 nop
665 nop
666 nop
667 call CommonInterruptEntry
668 nop
669 nop
670 nop
671 call CommonInterruptEntry
672 nop
673 nop
674 nop
675 call CommonInterruptEntry
676 nop
677 nop
678 nop
679 call CommonInterruptEntry
680 nop
681 nop
682 nop
683 call CommonInterruptEntry
684 nop
685 nop
686 nop
687 call CommonInterruptEntry
688 nop
689 nop
690 nop
691 call CommonInterruptEntry
692 nop
693 nop
694 nop
695 call CommonInterruptEntry
696 nop
697 nop
698 nop
699 call CommonInterruptEntry
700 nop
701 nop
702 nop
703 call CommonInterruptEntry
704 nop
705 nop
706 nop
707 call CommonInterruptEntry
708 nop
709 nop
710 nop
711 call CommonInterruptEntry
712 nop
713 nop
714 nop
715 call CommonInterruptEntry
716 nop
717 nop
718 nop
719 call CommonInterruptEntry
720 nop
721 nop
722 nop
723 call CommonInterruptEntry
724 nop
725 nop
726 nop
727 call CommonInterruptEntry
728 nop
729 nop
730 nop
731 call CommonInterruptEntry
732 nop
733 nop
734 nop
735 call CommonInterruptEntry
736 nop
737 nop
738 nop
739 call CommonInterruptEntry
740 nop
741 nop
742 nop
743 call CommonInterruptEntry
744 nop
745 nop
746 nop
747 call CommonInterruptEntry
748 nop
749 nop
750 nop
751 call CommonInterruptEntry
752 nop
753 nop
754 nop
755 call CommonInterruptEntry
756 nop
757 nop
758 nop
759 call CommonInterruptEntry
760 nop
761 nop
762 nop
763 call CommonInterruptEntry
764 nop
765 nop
766 nop
767 call CommonInterruptEntry
768 nop
769 nop
770 nop
771 call CommonInterruptEntry
772 nop
773 nop
774 nop
775 call CommonInterruptEntry
776 nop
777 nop
778 nop
779 call CommonInterruptEntry
780 nop
781 nop
782 nop
783 call CommonInterruptEntry
784 nop
785 nop
786 nop
787 call CommonInterruptEntry
788 nop
789 nop
790 nop
791 call CommonInterruptEntry
792 nop
793 nop
794 nop
795 call CommonInterruptEntry
796 nop
797 nop
798 nop
799 call CommonInterruptEntry
800 nop
801 nop
802 nop
803 call CommonInterruptEntry
804 nop
805 nop
806 nop
807 call CommonInterruptEntry
808 nop
809 nop
810 nop
811 call CommonInterruptEntry
812 nop
813 nop
814 nop
815 call CommonInterruptEntry
816 nop
817 nop
818 nop
819 call CommonInterruptEntry
820 nop
821 nop
822 nop
823 call CommonInterruptEntry
824 nop
825 nop
826 nop
827 call CommonInterruptEntry
828 nop
829 nop
830 nop
831 call CommonInterruptEntry
832 nop
833 nop
834 nop
835 call CommonInterruptEntry
836 nop
837 nop
838 nop
839 call CommonInterruptEntry
840 nop
841 nop
842 nop
843 call CommonInterruptEntry
844 nop
845 nop
846 nop
847 call CommonInterruptEntry
848 nop
849 nop
850 nop
851 call CommonInterruptEntry
852 nop
853 nop
854 nop
855 call CommonInterruptEntry
856 nop
857 nop
858 nop
859 call CommonInterruptEntry
860 nop
861 nop
862 nop
863 call CommonInterruptEntry
864 nop
865 nop
866 nop
867 call CommonInterruptEntry
868 nop
869 nop
870 nop
871 call CommonInterruptEntry
872 nop
873 nop
874 nop
875 call CommonInterruptEntry
876 nop
877 nop
878 nop
879 call CommonInterruptEntry
880 nop
881 nop
882 nop
883 call CommonInterruptEntry
884 nop
885 nop
886 nop
887 call CommonInterruptEntry
888 nop
889 nop
890 nop
891 call CommonInterruptEntry
892 nop
893 nop
894 nop
895 call CommonInterruptEntry
896 nop
897 nop
898 nop
899 call CommonInterruptEntry
900 nop
901 nop
902 nop
903 call CommonInterruptEntry
904 nop
905 nop
906 nop
907 call CommonInterruptEntry
908 nop
909 nop
910 nop
911 call CommonInterruptEntry
912 nop
913 nop
914 nop
915 call CommonInterruptEntry
916 nop
917 nop
918 nop
919 call CommonInterruptEntry
920 nop
921 nop
922 nop
923 call CommonInterruptEntry
924 nop
925 nop
926 nop
927 call CommonInterruptEntry
928 nop
929 nop
930 nop
931 call CommonInterruptEntry
932 nop
933 nop
934 nop
935 call CommonInterruptEntry
936 nop
937 nop
938 nop
939 call CommonInterruptEntry
940 nop
941 nop
942 nop
943 call CommonInterruptEntry
944 nop
945 nop
946 nop
947 call CommonInterruptEntry
948 nop
949 nop
950 nop
951 call CommonInterruptEntry
952 nop
953 nop
954 nop
955 call CommonInterruptEntry
956 nop
957 nop
958 nop
959 call CommonInterruptEntry
960 nop
961 nop
962 nop
963 call CommonInterruptEntry
964 nop
965 nop
966 nop
967 call CommonInterruptEntry
968 nop
969 nop
970 nop
971 call CommonInterruptEntry
972 nop
973 nop
974 nop
975 call CommonInterruptEntry
976 nop
977 nop
978 nop
979 call CommonInterruptEntry
980 nop
981 nop
982 nop
983 call CommonInterruptEntry
984 nop
985 nop
986 nop
987 call CommonInterruptEntry
988 nop
989 nop
990 nop
991 call CommonInterruptEntry
992 nop
993 nop
994 nop
995 call CommonInterruptEntry
996 nop
997 nop
998 nop
999 call CommonInterruptEntry
1000 nop
1001 nop
1002 nop
1003 call CommonInterruptEntry
1004 nop
1005 nop
1006 nop
1007 call CommonInterruptEntry
1008 nop
1009 nop
1010 nop
1011 call CommonInterruptEntry
1012 nop
1013 nop
1014 nop
1015 call CommonInterruptEntry
1016 nop
1017 nop
1018 nop
1019 call CommonInterruptEntry
1020 nop
1021 nop
1022 nop
1023 call CommonInterruptEntry
1024 nop
1025 nop
1026 nop
1027 call CommonInterruptEntry
1028 nop
1029 nop
1030 nop
1031 call CommonInterruptEntry
1032 nop
1033 nop
1034 nop
1035 call CommonInterruptEntry
1036 nop
1037 nop
1038 nop
1039 call CommonInterruptEntry
1040 nop
1041 nop
1042 nop
1043 call CommonInterruptEntry
1044 nop
1045 nop
1046 nop
1047 call CommonInterruptEntry
1048 nop
1049 nop
1050 nop
1051 call CommonInterruptEntry
1052 nop
1053 nop
1054 nop
1055 call CommonInterruptEntry
1056 nop
1057 nop
1058 nop
1059 call CommonInterruptEntry
1060 nop
1061 nop
1062 nop
1063 call CommonInterruptEntry
1064 nop
1065 nop
1066 nop
1067 call CommonInterruptEntry
1068 nop
1069 nop
1070 nop
1071 call CommonInterruptEntry
1072 nop
1073 nop
1074 nop
1075 call CommonInterruptEntry
1076 nop
1077 nop
1078 nop
1079 call CommonInterruptEntry
1080 nop
1081 nop
1082 nop
1083 call CommonInterruptEntry
1084 nop
1085 nop
1086 nop
1087 call CommonInterruptEntry
1088 nop
1089 nop
1090 nop
1091 call CommonInterruptEntry
1092 nop
1093 nop
1094 nop
1095 call CommonInterruptEntry
1096 nop
1097 nop
1098 nop
1099 call CommonInterruptEntry
1100 nop
1101 nop
1102 nop
1103 call CommonInterruptEntry
1104 nop
1105 nop
1106 nop
1107 call CommonInterruptEntry
1108 nop
1109 nop
1110 nop
1111 call CommonInterruptEntry
1112 nop
1113 nop
1114 nop
1115 call CommonInterruptEntry
1116 nop
1117 nop
1118 nop
1119 call CommonInterruptEntry
1120 nop
1121 nop
1122 nop
1123 call CommonInterruptEntry
1124 nop
1125 nop
1126 nop
1127 call CommonInterruptEntry
1128 nop
1129 nop
1130 nop
1131 call CommonInterruptEntry
1132 nop
1133 nop
1134 nop
1135 call CommonInterruptEntry
1136 nop
1137 nop
1138 nop
1139 call CommonInterruptEntry
1140 nop
1141 nop
1142 nop
1143 call CommonInterruptEntry
1144 nop
1145 nop
1146 nop
1147 call CommonInterruptEntry
1148 nop
1149 nop
1150 nop
1151 call CommonInterruptEntry
1152 nop
1153 nop
1154 nop
1155 call CommonInterruptEntry
1156 nop
1157 nop
1158 nop
1159 call CommonInterruptEntry
1160 nop
1161 nop
1162 nop
1163 call CommonInterruptEntry
1164 nop
1165 nop
1166 nop
1167 call CommonInterruptEntry
1168 nop
1169 nop
1170 nop
1171 call CommonInterruptEntry
1172 nop
1173 nop
1174 nop
1175 call CommonInterruptEntry
1176 nop
1177 nop
1178 nop
1179 call CommonInterruptEntry
1180 nop
1181 nop
1182 nop
1183 call CommonInterruptEntry
1184 nop
1185 nop
1186 nop
1187 call CommonInterruptEntry
1188 nop
1189 nop
1190 nop
1191 call CommonInterruptEntry
1192 nop
1193 nop
1194 nop
1195 call CommonInterruptEntry
1196 nop
1197 nop
1198 nop
1199 call CommonInterruptEntry
1200 nop
1201 nop
1202 nop
1203 call CommonInterruptEntry
1204 nop
1205 nop
1206 nop
1207 call CommonInterruptEntry
1208 nop
1209 nop
1210 nop
1211 call CommonInterruptEntry
1212 nop
1213 nop
1214 nop
1215 call CommonInterruptEntry
1216 nop
1217 nop
1218 nop
1219 call CommonInterruptEntry
1220 nop
1221 nop
1222 nop
1223 call CommonInterruptEntry
1224 nop
1225 nop
1226 nop
1227 call CommonInterruptEntry
1228 nop
1229 nop
1230 nop
1231 call CommonInterruptEntry
1232 nop
1233 nop
1234 nop
1235 call CommonInterruptEntry
1236 nop
1237 nop
1238 nop
1239 call CommonInterruptEntry
1240 nop
1241 nop
1242 nop
1243 call CommonInterruptEntry
1244 nop
1245 nop
1246 nop
1247 call CommonInterruptEntry
1248 nop
1249 nop
1250 nop
1251 call CommonInterruptEntry
1252 nop
1253 nop
1254 nop
1255 call CommonInterruptEntry
1256 nop
1257 nop
1258 nop
1259 call CommonInterruptEntry
1260 nop
1261 nop
1262 nop
1263 call CommonInterruptEntry
1264 nop
1265 nop
1266 nop
1267 call CommonInterruptEntry
1268 nop
1269 nop
1270 nop
1271 call CommonInterruptEntry
1272 nop
1273 nop
1274 nop
1275 call CommonInterruptEntry
1276 nop
1277 nop
1278 nop
1279 call CommonInterruptEntry
1280 nop
1281 nop
1282 nop
1283 call CommonInterruptEntry
1284 nop
1285 nop
1286 nop
1287 call CommonInterruptEntry
1288 nop
1289 nop
1290 nop
1291 call CommonInterruptEntry
1292 nop
1293 nop
1294 nop
1295 call CommonInterruptEntry
1296 nop
1297 nop
1298 nop
1299 call CommonInterruptEntry
1300 nop
1301 nop
1302 nop
1303 call CommonInterruptEntry
1304 nop
1305 nop
1306 nop
1307 call CommonInterruptEntry
1308 nop
1309 nop
1310 nop
1311 call CommonInterruptEntry
1312 nop
1313 nop
1314 nop
1315 call CommonInterruptEntry
1316 nop
1317 nop
1318 nop
1319 call CommonInterruptEntry
1320 nop
1321 nop
1322 nop
1323 call CommonInterruptEntry
1324 nop
1325 nop
1326 nop
1327 call CommonInterruptEntry
1328 nop
1329 nop
1330 nop
1331 call CommonInterruptEntry
1332 nop
1333 nop
1334 nop
1335 call CommonInterruptEntry
1336 nop
1337 nop
1338 nop
1339 AsmIdtVector00Base ENDP
1340
1341
1342 ;---------------------------------------;
1343 ; CommonInterruptEntry ;
1344 ;---------------------------------------;
1345 ; The follow algorithm is used for the common interrupt routine.
1346 ; TBD: Save EFI_SYSTEM_CONTEXT_x64 on the stack per AP definition
1347 ;
1348 ;
1349 CommonInterruptEntry PROC NEAR PUBLIC
1350 cli
1351 jmp $
1352 iret
1353
1354 CommonInterruptEntry ENDP
1355
1356 END
1357