Author: aandrejevic
Date: Sat Nov 30 22:17:18 2013
New Revision: 61158

URL: http://svn.reactos.org/svn/reactos?rev=61158&view=rev
Log:
[FAST486]
Move the prefix reset below the interrupt check, because 
Fast486InterruptInternal
might set OPSIZE in some circumstances.


Modified:
    branches/ntvdm/lib/fast486/fast486.c

Modified: branches/ntvdm/lib/fast486/fast486.c
URL: 
http://svn.reactos.org/svn/reactos/branches/ntvdm/lib/fast486/fast486.c?rev=61158&r1=61157&r2=61158&view=diff
==============================================================================
--- branches/ntvdm/lib/fast486/fast486.c        [iso-8859-1] (original)
+++ branches/ntvdm/lib/fast486/fast486.c        [iso-8859-1] Sat Nov 30 
22:17:18 2013
@@ -58,7 +58,12 @@
         if (State->PrefixFlags == 0) State->SavedInstPtr = State->InstPtr;
 
         /* Perform an instruction fetch */
-        if (!Fast486FetchByte(State, &Opcode)) continue;
+        if (!Fast486FetchByte(State, &Opcode))
+        {
+            /* Exception occurred */
+            State->PrefixFlags = 0;
+            continue;
+        }
 
         // TODO: Check for CALL/RET to update ProcedureCallCount.
 
@@ -78,9 +83,6 @@
             /* This is a prefix, go to the next instruction immediately */
             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
@@ -113,6 +115,9 @@
             /* 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)


Reply via email to