[SOFT386]
authorAleksandar Andrejevic <aandrejevic@reactos.org>
Wed, 16 Oct 2013 02:22:40 +0000 (02:22 +0000)
committerAleksandar Andrejevic <aandrejevic@reactos.org>
Wed, 16 Oct 2013 02:22:40 +0000 (02:22 +0000)
Fix bugs in SF calculation.

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

lib/soft386/opcodes.c

index 5353353..8f7488b 100644 (file)
@@ -1663,7 +1663,7 @@ SOFT386_OPCODE_HANDLER(Soft386OpcodeOrModrm)
         State->Flags.Cf = FALSE;
         State->Flags.Of = FALSE;
         State->Flags.Zf = (Result == 0) ? TRUE : FALSE;
         State->Flags.Cf = FALSE;
         State->Flags.Of = FALSE;
         State->Flags.Zf = (Result == 0) ? TRUE : FALSE;
-        State->Flags.Sf = (Result & SIGN_FLAG_LONG) ? TRUE : FALSE;
+        State->Flags.Sf = (Result & SIGN_FLAG_WORD) ? TRUE : FALSE;
         State->Flags.Pf = Soft386CalculateParity(Result);
 
         /* Write back the result */
         State->Flags.Pf = Soft386CalculateParity(Result);
 
         /* Write back the result */
@@ -1930,7 +1930,7 @@ SOFT386_OPCODE_HANDLER(Soft386OpcodeAndModrm)
         State->Flags.Cf = FALSE;
         State->Flags.Of = FALSE;
         State->Flags.Zf = (Result == 0) ? TRUE : FALSE;
         State->Flags.Cf = FALSE;
         State->Flags.Of = FALSE;
         State->Flags.Zf = (Result == 0) ? TRUE : FALSE;
-        State->Flags.Sf = (Result & SIGN_FLAG_LONG) ? TRUE : FALSE;
+        State->Flags.Sf = (Result & SIGN_FLAG_WORD) ? TRUE : FALSE;
         State->Flags.Pf = Soft386CalculateParity(Result);
 
         /* Write back the result */
         State->Flags.Pf = Soft386CalculateParity(Result);
 
         /* Write back the result */
@@ -2197,7 +2197,7 @@ SOFT386_OPCODE_HANDLER(Soft386OpcodeXorModrm)
         State->Flags.Cf = FALSE;
         State->Flags.Of = FALSE;
         State->Flags.Zf = (Result == 0) ? TRUE : FALSE;
         State->Flags.Cf = FALSE;
         State->Flags.Of = FALSE;
         State->Flags.Zf = (Result == 0) ? TRUE : FALSE;
-        State->Flags.Sf = (Result & SIGN_FLAG_LONG) ? TRUE : FALSE;
+        State->Flags.Sf = (Result & SIGN_FLAG_WORD) ? TRUE : FALSE;
         State->Flags.Pf = Soft386CalculateParity(Result);
 
         /* Write back the result */
         State->Flags.Pf = Soft386CalculateParity(Result);
 
         /* Write back the result */
@@ -2454,7 +2454,7 @@ SOFT386_OPCODE_HANDLER(Soft386OpcodeTestModrm)
         State->Flags.Cf = FALSE;
         State->Flags.Of = FALSE;
         State->Flags.Zf = (Result == 0) ? TRUE : FALSE;
         State->Flags.Cf = FALSE;
         State->Flags.Of = FALSE;
         State->Flags.Zf = (Result == 0) ? TRUE : FALSE;
-        State->Flags.Sf = (Result & SIGN_FLAG_LONG) ? TRUE : FALSE;
+        State->Flags.Sf = (Result & SIGN_FLAG_WORD) ? TRUE : FALSE;
         State->Flags.Pf = Soft386CalculateParity(Result);
     }
 
         State->Flags.Pf = Soft386CalculateParity(Result);
     }