]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Use a local variable and assign 0 to it, then use it as legacy interrupt table base...
authorli-elvin <li-elvin@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 19 Oct 2011 00:45:13 +0000 (00:45 +0000)
committerli-elvin <li-elvin@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 19 Oct 2011 00:45:13 +0000 (00:45 +0000)
Signed-off-by: li-elvin
Reviewed-by: mdkinney, ydong10
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12547 6f19259b-4bc3-4df7-8a09-765794883524

IntelFrameworkModulePkg/Csm/LegacyBiosDxe/Thunk.c

index 9a62499f05d56da25d6b26c287dfd376b940e1f8..16c873d8f5c40bcb42ec9b107d65fbe1388be7c3 100644 (file)
@@ -57,6 +57,8 @@ LegacyBiosInt86 (
   IN  EFI_IA32_REGISTER_SET         *Regs\r
   )\r
 {\r
+  UINT32  *VectorBase;\r
+\r
   Regs->X.Flags.Reserved1 = 1;\r
   Regs->X.Flags.Reserved2 = 0;\r
   Regs->X.Flags.Reserved3 = 0;\r
@@ -66,11 +68,16 @@ LegacyBiosInt86 (
   Regs->X.Flags.IF        = 0;\r
   Regs->X.Flags.TF        = 0;\r
   Regs->X.Flags.CF        = 0;\r
-\r
+  //\r
+  // The base address of legacy interrupt vector table is 0.\r
+  // We use this base address to get the legacy interrupt handler.\r
+  //\r
+  VectorBase              = 0;\r
+  \r
   return InternalLegacyBiosFarCall (\r
            This,\r
-           (UINT16) (((UINT32 *)NULL)[BiosInt] >> 16),\r
-           (UINT16) ((UINT32 *)NULL)[BiosInt],\r
+           (UINT16) ((VectorBase)[BiosInt] >> 16),\r
+           (UINT16) (VectorBase)[BiosInt],\r
            Regs,\r
            &Regs->X.Flags,\r
            sizeof (Regs->X.Flags)\r