[FAST486]
authorAleksandar Andrejevic <aandrejevic@reactos.org>
Sat, 30 Nov 2013 23:45:59 +0000 (23:45 +0000)
committerAleksandar Andrejevic <aandrejevic@reactos.org>
Sat, 30 Nov 2013 23:45:59 +0000 (23:45 +0000)
Revert r61158, and fix the prefix issue correctly, but resetting the flags
again after the call to Fast486InterruptInternal.

svn path=/branches/ntvdm/; revision=61160

lib/fast486/fast486.c

index a249ab4..28b8381 100644 (file)
@@ -84,6 +84,9 @@ Fast486ExecutionControl(PFAST486_STATE State, INT Command)
             continue;
         }
 
+        /* A non-prefix opcode has been executed, reset the prefix flags */
+        State->PrefixFlags = 0;
+
         /*
          * Check if there is an interrupt to execute, or a hardware interrupt signal
          * while interrupts are enabled.
@@ -100,6 +103,9 @@ Fast486ExecutionControl(PFAST486_STATE State, INT Command)
                                          IdtEntry.Selector,
                                          MAKELONG(IdtEntry.Offset, IdtEntry.OffsetHigh),
                                          IdtEntry.Type);
+
+                /* Restore the prefix flags, which would be set to OPSIZE for 32-bit real mode */
+                State->PrefixFlags = 0;
             }
 
             /* Clear the interrupt status */
@@ -115,9 +121,6 @@ Fast486ExecutionControl(PFAST486_STATE State, INT Command)
             /* Set the interrupt status to execute on the next instruction */
             State->IntStatus = FAST486_INT_EXECUTE;
         }
-
-        /* A non-prefix opcode has been executed, reset the prefix flags */
-        State->PrefixFlags = 0;
     }
     while ((Command == FAST486_CONTINUE)
            || (Command == FAST486_STEP_OVER && ProcedureCallCount > 0)