Commit 90251fb96e9feba205ee4867cbfe21e0142ad341

Authored by blueswir1
1 parent cb33da57

Fix taddcctv and tsubcctv (David Matthews)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3379 c046a42c-6fe2-441c-8c8c-71466251a162
target-sparc/op.c
... ... @@ -534,7 +534,7 @@ void OPPROTO op_tadd_T1_T0_ccTV(void)
534 534 ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31))
535 535 raise_exception(TT_TOVF);
536 536 #else
537   - if ((src1 & 0x03) || (T1 & 0x03))
  537 + if (((src1 ^ T1 ^ -1) & (src1 ^ T0)) & (1 << 31))
538 538 raise_exception(TT_TOVF);
539 539 #endif
540 540  
... ...
target-sparc/translate.c
... ... @@ -2027,10 +2027,12 @@ static void disas_sparc_insn(DisasContext * dc)
2027 2027 gen_movl_T0_reg(rd);
2028 2028 break;
2029 2029 case 0x22: /* taddcctv */
  2030 + save_state(dc);
2030 2031 gen_op_tadd_T1_T0_ccTV();
2031 2032 gen_movl_T0_reg(rd);
2032 2033 break;
2033 2034 case 0x23: /* tsubcctv */
  2035 + save_state(dc);
2034 2036 gen_op_tsub_T1_T0_ccTV();
2035 2037 gen_movl_T0_reg(rd);
2036 2038 break;
... ...