Commit 90251fb96e9feba205ee4867cbfe21e0142ad341
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
Showing
2 changed files
with
3 additions
and
1 deletions
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; | ... | ... |