diff options
Diffstat (limited to 'sim/v850')
-rw-r--r-- | sim/v850/ChangeLog | 2 | ||||
-rw-r--r-- | sim/v850/simops.c | 10 |
2 files changed, 7 insertions, 5 deletions
diff --git a/sim/v850/ChangeLog b/sim/v850/ChangeLog index 8c1cbbf..09156fe 100644 --- a/sim/v850/ChangeLog +++ b/sim/v850/ChangeLog @@ -1,5 +1,7 @@ Fri Aug 30 10:33:49 1996 Jeffrey A Law (law@cygnus.com) + * simops.c: Fix satadd, satsub boundary case handling. + * interp.c (hash): Fix. * interp.c (do_format_8): Get operands correctly and call the target function. diff --git a/sim/v850/simops.c b/sim/v850/simops.c index 1586b11..c6969fe 100644 --- a/sim/v850/simops.c +++ b/sim/v850/simops.c @@ -824,7 +824,7 @@ OP_C0 () | (sat ? PSW_SAT : 0)); /* Handle saturated results. */ - if (sat && (op0 & 0x80000000)) + if (sat && s) State.regs[OP[1]] = 0x80000000; else if (sat) State.regs[OP[1]] = 0x7fffffff; @@ -861,7 +861,7 @@ OP_220 () | (sat ? PSW_SAT : 0)); /* Handle saturated results. */ - if (sat && (op0 & 0x80000000)) + if (sat && s) State.regs[OP[1]] = 0x80000000; else if (sat) State.regs[OP[1]] = 0x7fffffff; @@ -894,7 +894,7 @@ OP_A0 () | (sat ? PSW_SAT : 0)); /* Handle saturated results. */ - if (sat && (op1 & 0x80000000)) + if (sat && s) State.regs[OP[1]] = 0x80000000; else if (sat) State.regs[OP[1]] = 0x7fffffff; @@ -930,7 +930,7 @@ OP_660 () | (sat ? PSW_SAT : 0)); /* Handle saturated results. */ - if (sat && (op1 & 0x80000000)) + if (sat && s) State.regs[OP[1]] = 0x80000000; else if (sat) State.regs[OP[1]] = 0x7fffffff; @@ -962,7 +962,7 @@ OP_80 () | (sat ? PSW_SAT : 0)); /* Handle saturated results. */ - if (sat && (op0 & 0x80000000)) + if (sat && s) State.regs[OP[1]] = 0x80000000; else if (sat) State.regs[OP[1]] = 0x7fffffff; |