diff --git a/src/execute.c b/src/execute.c index cc5d0ba..fc436af 100644 --- a/src/execute.c +++ b/src/execute.c @@ -262,7 +262,7 @@ static void executeDPRegister(Machine *state, a64inst_instruction *inst) { writeRegister(state, dest, regType, result); updateCondNZ(state, result, regType); - state->conditionCodes.Overflow = src1Val < result; + state->conditionCodes.Overflow = getMSB(src1Val, regType) != getMSB(src2Val, regType) && getMSB(src1Val, regType) != getMSB(result, regType); state->conditionCodes.Carry = src1Val >= src2Val; break;