]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Csm/LegacyBiosDxe/X64/InterruptTable.nasm
OvmfPkg: Copy the required CSM components from framework packages
[mirror_edk2.git] / OvmfPkg / Csm / LegacyBiosDxe / X64 / InterruptTable.nasm
diff --git a/OvmfPkg/Csm/LegacyBiosDxe/X64/InterruptTable.nasm b/OvmfPkg/Csm/LegacyBiosDxe/X64/InterruptTable.nasm
new file mode 100644 (file)
index 0000000..afc2f0e
--- /dev/null
@@ -0,0 +1,64 @@
+;; @file\r
+;  Interrupt Redirection Template\r
+;\r
+; Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>\r
+;\r
+; SPDX-License-Identifier: BSD-2-Clause-Patent\r
+;\r
+;;\r
+\r
+    DEFAULT REL\r
+    SECTION .text\r
+\r
+;----------------------------------------------------------------------------\r
+; Procedure:    InterruptRedirectionTemplate: Redirects interrupts 0x68-0x6F\r
+;\r
+; Input:        None\r
+;\r
+; Output:       None\r
+;\r
+; Prototype:    VOID\r
+;               InterruptRedirectionTemplate (\r
+;                                VOID\r
+;                                );\r
+;\r
+; Saves:        None\r
+;\r
+; Modified:     None\r
+;\r
+; Description:  Contains the code that is copied into low memory (below 640K).\r
+;               This code reflects interrupts 0x68-0x6f to interrupts 0x08-0x0f.\r
+;               This template must be copied into low memory, and the IDT entries\r
+;               0x68-0x6F must be point to the low memory copy of this code.  Each\r
+;               entry is 4 bytes long, so IDT entries 0x68-0x6F can be easily\r
+;               computed.\r
+;\r
+;----------------------------------------------------------------------------\r
+\r
+global ASM_PFX(InterruptRedirectionTemplate)\r
+ASM_PFX(InterruptRedirectionTemplate):\r
+  int     0x8\r
+  DB      0xcf          ; IRET\r
+  nop\r
+  int     0x9\r
+  DB      0xcf          ; IRET\r
+  nop\r
+  int     0xa\r
+  DB      0xcf          ; IRET\r
+  nop\r
+  int     0xb\r
+  DB      0xcf          ; IRET\r
+  nop\r
+  int     0xc\r
+  DB      0xcf          ; IRET\r
+  nop\r
+  int     0xd\r
+  DB      0xcf          ; IRET\r
+  nop\r
+  int     0xe\r
+  DB      0xcf          ; IRET\r
+  nop\r
+  int     0xf\r
+  DB      0xcf          ; IRET\r
+  nop\r
+\r