diff options
author | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-03-22 22:17:08 +0000 |
---|---|---|
committer | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-03-22 22:17:08 +0000 |
commit | e864cabdc0a38bb598ddcf88b264896dc6f3e3b2 (patch) | |
tree | b0ee2c4af21aec414b5dd1d461aec4739061be95 /target-ppc/translate.c | |
parent | a7222580366605ec15f3ffd83ddb0e62451b353b (diff) |
PowerPC bugfixes:
- must clear carry bit when doing addic with a zero immediate value
- fix missing RETURN in micro-operation that would lead to random failures
and crashes
- add USE_PRECISE_EMULATION compilation-time option to choose between
getting exact floating point results and fast but less accurate computation.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2526 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-ppc/translate.c')
-rw-r--r-- | target-ppc/translate.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/target-ppc/translate.c b/target-ppc/translate.c index 90a9fc93c7..fb9b07591a 100644 --- a/target-ppc/translate.c +++ b/target-ppc/translate.c @@ -781,6 +781,8 @@ GEN_HANDLER(addic, 0x0C, 0xFF, 0xFF, 0x00000000, PPC_INTEGER) else #endif gen_op_check_addc(); + } else { + gen_op_clear_xer_ca(); } gen_op_store_T0_gpr(rD(ctx->opcode)); } @@ -2804,7 +2806,8 @@ GEN_HANDLER(mcrxr, 0x1F, 0x00, 0x10, 0x007FF801, PPC_MISC) { gen_op_load_xer_cr(); gen_op_store_T0_crf(crfD(ctx->opcode)); - gen_op_clear_xer_cr(); + gen_op_clear_xer_ov(); + gen_op_clear_xer_ca(); } /* mfcr */ |