[SOFT386]

Fix bugs in SF calculation.


svn path=/branches/ntvdm/; revision=60687
This commit is contained in:
Aleksandar Andrejevic 2013-10-16 02:22:40 +00:00
parent 1df88c9d1d
commit 489dfb314e

View file

@ -1663,7 +1663,7 @@ SOFT386_OPCODE_HANDLER(Soft386OpcodeOrModrm)
State->Flags.Cf = FALSE; State->Flags.Cf = FALSE;
State->Flags.Of = FALSE; State->Flags.Of = FALSE;
State->Flags.Zf = (Result == 0) ? TRUE : 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);
/* Write back the result */ /* Write back the result */
@ -1930,7 +1930,7 @@ SOFT386_OPCODE_HANDLER(Soft386OpcodeAndModrm)
State->Flags.Cf = FALSE; State->Flags.Cf = FALSE;
State->Flags.Of = FALSE; State->Flags.Of = FALSE;
State->Flags.Zf = (Result == 0) ? TRUE : 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);
/* Write back the result */ /* Write back the result */
@ -2197,7 +2197,7 @@ SOFT386_OPCODE_HANDLER(Soft386OpcodeXorModrm)
State->Flags.Cf = FALSE; State->Flags.Cf = FALSE;
State->Flags.Of = FALSE; State->Flags.Of = FALSE;
State->Flags.Zf = (Result == 0) ? TRUE : 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);
/* Write back the result */ /* Write back the result */
@ -2454,7 +2454,7 @@ SOFT386_OPCODE_HANDLER(Soft386OpcodeTestModrm)
State->Flags.Cf = FALSE; State->Flags.Cf = FALSE;
State->Flags.Of = FALSE; State->Flags.Of = FALSE;
State->Flags.Zf = (Result == 0) ? TRUE : 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);
} }