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