Commit bb3911a609084dc1c0c72fc25884ef712066bec9
1 parent
4e3b1ea1
Sparc64 add/sub flag bugs fixed (Blue Swirl)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1579 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
4 additions
and
4 deletions
target-sparc/op.c
| @@ -379,7 +379,7 @@ void OPPROTO op_add_T1_T0_cc(void) | @@ -379,7 +379,7 @@ void OPPROTO op_add_T1_T0_cc(void) | ||
| 379 | env->psr |= PSR_ZERO; | 379 | env->psr |= PSR_ZERO; |
| 380 | if ((int32_t) T0 < 0) | 380 | if ((int32_t) T0 < 0) |
| 381 | env->psr |= PSR_NEG; | 381 | env->psr |= PSR_NEG; |
| 382 | - if ((src1 & 0xffffffff) < (T1 & 0xffffffff)) | 382 | + if ((T0 & 0xffffffff) < (src1 & 0xffffffff)) |
| 383 | env->psr |= PSR_CARRY; | 383 | env->psr |= PSR_CARRY; |
| 384 | if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff) ^ -1) & | 384 | if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff) ^ -1) & |
| 385 | ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31)) | 385 | ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31)) |
| @@ -424,7 +424,7 @@ void OPPROTO op_addx_T1_T0_cc(void) | @@ -424,7 +424,7 @@ void OPPROTO op_addx_T1_T0_cc(void) | ||
| 424 | env->psr |= PSR_ZERO; | 424 | env->psr |= PSR_ZERO; |
| 425 | if ((int32_t) T0 < 0) | 425 | if ((int32_t) T0 < 0) |
| 426 | env->psr |= PSR_NEG; | 426 | env->psr |= PSR_NEG; |
| 427 | - if ((src1 & 0xffffffff) < (T1 & 0xffffffff)) | 427 | + if ((T0 & 0xffffffff) < (src1 & 0xffffffff)) |
| 428 | env->psr |= PSR_CARRY; | 428 | env->psr |= PSR_CARRY; |
| 429 | if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff) ^ -1) & | 429 | if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff) ^ -1) & |
| 430 | ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31)) | 430 | ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31)) |
| @@ -480,7 +480,7 @@ void OPPROTO op_sub_T1_T0_cc(void) | @@ -480,7 +480,7 @@ void OPPROTO op_sub_T1_T0_cc(void) | ||
| 480 | env->xcc |= PSR_ZERO; | 480 | env->xcc |= PSR_ZERO; |
| 481 | if ((int64_t) T0 < 0) | 481 | if ((int64_t) T0 < 0) |
| 482 | env->xcc |= PSR_NEG; | 482 | env->xcc |= PSR_NEG; |
| 483 | - if (T0 < src1) | 483 | + if (src1 < T1) |
| 484 | env->xcc |= PSR_CARRY; | 484 | env->xcc |= PSR_CARRY; |
| 485 | if (((src1 ^ T1) & (src1 ^ T0)) & (1ULL << 63)) | 485 | if (((src1 ^ T1) & (src1 ^ T0)) & (1ULL << 63)) |
| 486 | env->xcc |= PSR_OVF; | 486 | env->xcc |= PSR_OVF; |
| @@ -525,7 +525,7 @@ void OPPROTO op_subx_T1_T0_cc(void) | @@ -525,7 +525,7 @@ void OPPROTO op_subx_T1_T0_cc(void) | ||
| 525 | env->xcc |= PSR_ZERO; | 525 | env->xcc |= PSR_ZERO; |
| 526 | if ((int64_t) T0 < 0) | 526 | if ((int64_t) T0 < 0) |
| 527 | env->xcc |= PSR_NEG; | 527 | env->xcc |= PSR_NEG; |
| 528 | - if (T0 < src1) | 528 | + if (src1 < T1) |
| 529 | env->xcc |= PSR_CARRY; | 529 | env->xcc |= PSR_CARRY; |
| 530 | if (((src1 ^ T1) & (src1 ^ T0)) & (1ULL << 63)) | 530 | if (((src1 ^ T1) & (src1 ^ T0)) & (1ULL << 63)) |
| 531 | env->xcc |= PSR_OVF; | 531 | env->xcc |= PSR_OVF; |