Commit 0cadcbbe6595e77ef50c5f50a2f064a37f3da698
1 parent
5bf06a95
target-ppc: fix computation of XER.{CA, OV} in addme, subfme
(Jocelyn Mayer) git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5380 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
2 additions
and
18 deletions
target-ppc/op.c
| ... | ... | @@ -640,8 +640,6 @@ void OPPROTO op_add_me (void) |
| 640 | 640 | T0 += xer_ca + (-1); |
| 641 | 641 | if (likely((uint32_t)T1 != 0)) |
| 642 | 642 | xer_ca = 1; |
| 643 | - else | |
| 644 | - xer_ca = 0; | |
| 645 | 643 | RETURN(); |
| 646 | 644 | } |
| 647 | 645 | |
| ... | ... | @@ -651,8 +649,6 @@ void OPPROTO op_add_me_64 (void) |
| 651 | 649 | T0 += xer_ca + (-1); |
| 652 | 650 | if (likely((uint64_t)T1 != 0)) |
| 653 | 651 | xer_ca = 1; |
| 654 | - else | |
| 655 | - xer_ca = 0; | |
| 656 | 652 | RETURN(); |
| 657 | 653 | } |
| 658 | 654 | #endif |
| ... | ... | @@ -930,8 +926,6 @@ void OPPROTO op_subfme (void) |
| 930 | 926 | T0 = ~T0 + xer_ca - 1; |
| 931 | 927 | if (likely((uint32_t)T0 != UINT32_MAX)) |
| 932 | 928 | xer_ca = 1; |
| 933 | - else | |
| 934 | - xer_ca = 0; | |
| 935 | 929 | RETURN(); |
| 936 | 930 | } |
| 937 | 931 | |
| ... | ... | @@ -941,8 +935,6 @@ void OPPROTO op_subfme_64 (void) |
| 941 | 935 | T0 = ~T0 + xer_ca - 1; |
| 942 | 936 | if (likely((uint64_t)T0 != UINT64_MAX)) |
| 943 | 937 | xer_ca = 1; |
| 944 | - else | |
| 945 | - xer_ca = 0; | |
| 946 | 938 | RETURN(); |
| 947 | 939 | } |
| 948 | 940 | #endif | ... | ... |
target-ppc/op_helper.c
| ... | ... | @@ -151,10 +151,8 @@ void do_addmeo (void) |
| 151 | 151 | T0 += xer_ca + (-1); |
| 152 | 152 | xer_ov = ((uint32_t)T1 & ((uint32_t)T1 ^ (uint32_t)T0)) >> 31; |
| 153 | 153 | xer_so |= xer_ov; |
| 154 | - if (likely(T1 != 0)) | |
| 154 | + if (likely((uint32_t)T1 != 0)) | |
| 155 | 155 | xer_ca = 1; |
| 156 | - else | |
| 157 | - xer_ca = 0; | |
| 158 | 156 | } |
| 159 | 157 | |
| 160 | 158 | #if defined(TARGET_PPC64) |
| ... | ... | @@ -164,10 +162,8 @@ void do_addmeo_64 (void) |
| 164 | 162 | T0 += xer_ca + (-1); |
| 165 | 163 | xer_ov = ((uint64_t)T1 & ((uint64_t)T1 ^ (uint64_t)T0)) >> 63; |
| 166 | 164 | xer_so |= xer_ov; |
| 167 | - if (likely(T1 != 0)) | |
| 165 | + if (likely((uint64_t)T1 != 0)) | |
| 168 | 166 | xer_ca = 1; |
| 169 | - else | |
| 170 | - xer_ca = 0; | |
| 171 | 167 | } |
| 172 | 168 | #endif |
| 173 | 169 | |
| ... | ... | @@ -312,8 +308,6 @@ void do_subfmeo (void) |
| 312 | 308 | xer_so |= xer_ov; |
| 313 | 309 | if (likely((uint32_t)T1 != UINT32_MAX)) |
| 314 | 310 | xer_ca = 1; |
| 315 | - else | |
| 316 | - xer_ca = 0; | |
| 317 | 311 | } |
| 318 | 312 | |
| 319 | 313 | #if defined(TARGET_PPC64) |
| ... | ... | @@ -325,8 +319,6 @@ void do_subfmeo_64 (void) |
| 325 | 319 | xer_so |= xer_ov; |
| 326 | 320 | if (likely((uint64_t)T1 != UINT64_MAX)) |
| 327 | 321 | xer_ca = 1; |
| 328 | - else | |
| 329 | - xer_ca = 0; | |
| 330 | 322 | } |
| 331 | 323 | #endif |
| 332 | 324 | ... | ... |