[FAST486]
authorAleksandar Andrejevic <aandrejevic@reactos.org>
Fri, 8 May 2015 01:34:18 +0000 (01:34 +0000)
committerAleksandar Andrejevic <aandrejevic@reactos.org>
Fri, 8 May 2015 01:34:18 +0000 (01:34 +0000)
Don't forget to check for gates in 16-bit protected mode too.

svn path=/trunk/; revision=67596

reactos/lib/fast486/opgroups.c

index ccaab8b..912b5bf 100644 (file)
@@ -1629,6 +1629,15 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupFF)
                 return;
             }
 
+            if (State->ControlRegisters[FAST486_REG_CR0] & FAST486_CR0_PE)
+            {
+                if (!Fast486ProcessGate(State, Selector, Value, FALSE))
+                {
+                    /* Gate processed or exception occurred */
+                    return;
+                }
+            }
+
             /* Push the current value of CS */
             if (!Fast486StackPush(State, State->SegmentRegs[FAST486_REG_CS].Selector))
             {
@@ -1688,6 +1697,15 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupFF)
                 return;
             }
 
+            if (State->ControlRegisters[FAST486_REG_CR0] & FAST486_CR0_PE)
+            {
+                if (!Fast486ProcessGate(State, Selector, Value, FALSE))
+                {
+                    /* Gate processed or exception occurred */
+                    return;
+                }
+            }
+
             /* Load the new code segment */
             if (!Fast486LoadSegment(State, FAST486_REG_CS, Selector))
             {