[FAST486]
[reactos.git] / lib / fast486 / opgroups.c
index 7480296..264fa66 100644 (file)
@@ -1632,6 +1632,9 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupFF)
         {
             /* Set the IP to the address */
             State->InstPtr.LowWord = Value;
+
+            /* Clear the top half of EIP */
+            State->InstPtr.Long &= 0xFFFF;
         }
         else if (ModRegRm.Register == 5)
         {
@@ -1725,6 +1728,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup0F00)
                 || State->Flags.Vm)
             {
                 Fast486Exception(State, FAST486_EXCEPTION_UD);
+                return FALSE;
             }
 
             return Fast486WriteModrmWordOperands(State,
@@ -1741,6 +1745,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup0F00)
                 || State->Flags.Vm)
             {
                 Fast486Exception(State, FAST486_EXCEPTION_UD);
+                return FALSE;
             }
 
             return Fast486WriteModrmWordOperands(State,
@@ -1760,6 +1765,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup0F00)
                 || State->Flags.Vm)
             {
                 Fast486Exception(State, FAST486_EXCEPTION_UD);
+                return FALSE;
             }
 
             /* This is a privileged instruction */
@@ -1835,6 +1841,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup0F00)
                 || State->Flags.Vm)
             {
                 Fast486Exception(State, FAST486_EXCEPTION_UD);
+                return FALSE;
             }
 
             /* This is a privileged instruction */
@@ -1912,6 +1919,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup0F00)
                 || State->Flags.Vm)
             {
                 Fast486Exception(State, FAST486_EXCEPTION_UD);
+                return FALSE;
             }
 
             /* This is a privileged instruction */