[fast486]: code formatting + add a comment about the instruction 0xF1.
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sun, 12 Oct 2014 13:50:05 +0000 (13:50 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sun, 12 Oct 2014 13:50:05 +0000 (13:50 +0000)
svn path=/trunk/; revision=64696

reactos/lib/fast486/common.c
reactos/lib/fast486/extraops.c
reactos/lib/fast486/fpu.c
reactos/lib/fast486/opcodes.c

index 46556e2..03378c2 100644 (file)
@@ -166,8 +166,6 @@ Fast486GetIntVector(PFAST486_STATE State,
                     UCHAR Number,
                     PFAST486_IDT_ENTRY IdtEntry)
 {
                     UCHAR Number,
                     PFAST486_IDT_ENTRY IdtEntry)
 {
-    ULONG FarPointer;
-
     /* Check for protected mode */
     if (State->ControlRegisters[FAST486_REG_CR0] & FAST486_CR0_PE)
     {
     /* Check for protected mode */
     if (State->ControlRegisters[FAST486_REG_CR0] & FAST486_CR0_PE)
     {
@@ -185,6 +183,7 @@ Fast486GetIntVector(PFAST486_STATE State,
     else
     {
         /* Read from the real-mode IVT */
     else
     {
         /* Read from the real-mode IVT */
+        ULONG FarPointer;
 
         /* Paging is always disabled in real mode */
         State->MemReadCallback(State,
 
         /* Paging is always disabled in real mode */
         State->MemReadCallback(State,
@@ -215,9 +214,9 @@ Fast486InterruptInternal(PFAST486_STATE State,
     USHORT SegmentSelector = IdtEntry->Selector;
     ULONG  Offset          = MAKELONG(IdtEntry->Offset, IdtEntry->OffsetHigh);
     ULONG  GateType        = IdtEntry->Type;
     USHORT SegmentSelector = IdtEntry->Selector;
     ULONG  Offset          = MAKELONG(IdtEntry->Offset, IdtEntry->OffsetHigh);
     ULONG  GateType        = IdtEntry->Type;
+    BOOLEAN GateSize = (GateType == FAST486_IDT_INT_GATE_32) ||
+                       (GateType == FAST486_IDT_TRAP_GATE_32);
 
 
-    BOOLEAN GateSize = (GateType == FAST486_IDT_INT_GATE_32)
-                       || (GateType == FAST486_IDT_TRAP_GATE_32);
     BOOLEAN Success = FALSE;
     ULONG OldPrefixFlags = State->PrefixFlags;
 
     BOOLEAN Success = FALSE;
     ULONG OldPrefixFlags = State->PrefixFlags;
 
index be20fd4..3496c7a 100644 (file)
@@ -2267,9 +2267,9 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeXadd)
         ULONG Source, Destination, Result;
 
         if (!Fast486ReadModrmDwordOperands(State,
         ULONG Source, Destination, Result;
 
         if (!Fast486ReadModrmDwordOperands(State,
-                                          &ModRegRm,
-                                          &Source,
-                                          &Destination))
+                                           &ModRegRm,
+                                           &Source,
+                                           &Destination))
         {
             /* Exception occurred */
             return FALSE;
         {
             /* Exception occurred */
             return FALSE;
index 73484ee..6a16fdf 100644 (file)
@@ -125,7 +125,7 @@ Fast486FpuAdd(PFAST486_STATE State,
     /* Find the largest exponent */
     TempResult.Exponent = max(FirstOperand->Exponent, SecondOperand->Exponent);
 
     /* Find the largest exponent */
     TempResult.Exponent = max(FirstOperand->Exponent, SecondOperand->Exponent);
 
-    /* Adjust the first operand to it */
+    /* Adjust the first operand to it... */
     if (FirstAdjusted.Exponent < TempResult.Exponent)
     {
         FirstAdjusted.Mantissa >>= (TempResult.Exponent - FirstAdjusted.Exponent);
     if (FirstAdjusted.Exponent < TempResult.Exponent)
     {
         FirstAdjusted.Mantissa >>= (TempResult.Exponent - FirstAdjusted.Exponent);
index a032691..1d773f9 100644 (file)
@@ -279,7 +279,7 @@ Fast486OpcodeHandlers[FAST486_NUM_OPCODE_HANDLERS] =
     Fast486OpcodeOutByte,               /* 0xEE */
     Fast486OpcodeOut,                   /* 0xEF */
     Fast486OpcodePrefix,                /* 0xF0 */
     Fast486OpcodeOutByte,               /* 0xEE */
     Fast486OpcodeOut,                   /* 0xEF */
     Fast486OpcodePrefix,                /* 0xF0 */
-    Fast486OpcodeInvalid,               /* 0xF1 */  // Invalid opcode
+    Fast486OpcodeInvalid,               /* 0xF1 */  // Invalid opcode -- ICEBP/INT01 opcode
     Fast486OpcodePrefix,                /* 0xF2 */
     Fast486OpcodePrefix,                /* 0xF3 */
     Fast486OpcodeHalt,                  /* 0xF4 */
     Fast486OpcodePrefix,                /* 0xF2 */
     Fast486OpcodePrefix,                /* 0xF3 */
     Fast486OpcodeHalt,                  /* 0xF4 */
@@ -300,7 +300,12 @@ Fast486OpcodeHandlers[FAST486_NUM_OPCODE_HANDLERS] =
 
 FAST486_OPCODE_HANDLER(Fast486OpcodeInvalid)
 {
 
 FAST486_OPCODE_HANDLER(Fast486OpcodeInvalid)
 {
-    /* This is not a valid opcode */
+    /*
+     * This is not a valid opcode.
+     * Well, not totally: see http://www.rcollins.org/secrets/opcodes/ICEBP.html
+     * for more details.
+     */
+    DPRINT1("FAST486 -- Calling ICEBP opcode\n");
     Fast486Exception(State, FAST486_EXCEPTION_UD);
     return FALSE;
 }
     Fast486Exception(State, FAST486_EXCEPTION_UD);
     return FALSE;
 }
@@ -5428,6 +5433,11 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeMovOffsetEax)
 
 FAST486_OPCODE_HANDLER(Fast486OpcodeSalc)
 {
 
 FAST486_OPCODE_HANDLER(Fast486OpcodeSalc)
 {
+    /*
+     * See: http://www.rcollins.org/secrets/opcodes/SALC.html
+     * for more information.
+     */
+
     /* Make sure this is the right instruction */
     ASSERT(Opcode == 0xD6);
 
     /* Make sure this is the right instruction */
     ASSERT(Opcode == 0xD6);