[HAL]
authorThomas Faber <thomas.faber@reactos.org>
Mon, 22 May 2017 12:20:31 +0000 (12:20 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Mon, 22 May 2017 12:20:31 +0000 (12:20 +0000)
- Correctly prepare the I/O port map for V86 mode by making HalpSavedIoMap actually point to it instead of to the parent structure. Fixes boot with video BIOS code that relies on I/O ports FF00 through FFFF.
CORE-13306 #resolve

svn path=/trunk/; revision=74623

reactos/hal/halx86/generic/bios.c

index 70ee760..329f0d2 100644 (file)
@@ -390,7 +390,7 @@ HalpStoreAndClearIopm(VOID)
     //
     // Loop the I/O Map
     //
-    for (i = j = 0; i < (IOPM_SIZE) / 2; i++)
+    for (i = j = 0; i < IOPM_SIZE / sizeof(USHORT); i++)
     {
         //
         // Check for non-FFFF entry
@@ -415,7 +415,10 @@ HalpStoreAndClearIopm(VOID)
     //
     // Terminate it
     //
-    while (i++ < (IOPM_FULL_SIZE / 2)) *Entry++ = 0xFFFF;
+    while (i++ < IOPM_FULL_SIZE / sizeof(USHORT))
+    {
+        *Entry++ = 0xFFFF;
+    }
 
     //
     // Return the entries we saved
@@ -542,7 +545,7 @@ HalpSetupRealModeIoPermissionsAndTask(VOID)
     //
     // Save a copy of the I/O Map and delete it
     //
-    HalpSavedIoMap = (PUSHORT)&(KeGetPcr()->TSS->IoMaps[0]);
+    HalpSavedIoMap = (PUSHORT)KeGetPcr()->TSS->IoMaps[0].IoMap;
     HalpStoreAndClearIopm();
 
     //