- 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
This commit is contained in:
Thomas Faber 2017-05-22 12:20:31 +00:00
parent 7fe1fd0766
commit 945dd20eae

View file

@ -390,7 +390,7 @@ HalpStoreAndClearIopm(VOID)
// //
// Loop the I/O Map // 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 // Check for non-FFFF entry
@ -415,7 +415,10 @@ HalpStoreAndClearIopm(VOID)
// //
// Terminate it // Terminate it
// //
while (i++ < (IOPM_FULL_SIZE / 2)) *Entry++ = 0xFFFF; while (i++ < IOPM_FULL_SIZE / sizeof(USHORT))
{
*Entry++ = 0xFFFF;
}
// //
// Return the entries we saved // Return the entries we saved
@ -542,7 +545,7 @@ HalpSetupRealModeIoPermissionsAndTask(VOID)
// //
// Save a copy of the I/O Map and delete it // 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(); HalpStoreAndClearIopm();
// //