aboutsummaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@vmware.com>2003-07-23 21:47:28 +0000
committerMichael Snyder <msnyder@vmware.com>2003-07-23 21:47:28 +0000
commit1b606171ade7edbc12a8b478295e4063f4b02c0c (patch)
treeff3770744f923bb963e15c076ca2a9f9c2256526 /sim
parentb2bc31014468887eb98748fb140cff7e35aabf42 (diff)
downloadfsf-binutils-gdb-1b606171ade7edbc12a8b478295e4063f4b02c0c.zip
fsf-binutils-gdb-1b606171ade7edbc12a8b478295e4063f4b02c0c.tar.gz
fsf-binutils-gdb-1b606171ade7edbc12a8b478295e4063f4b02c0c.tar.bz2
2003-07-09 Michael Snyder <msnyder@redhat.com>
* gencode.c (prnd): Clear LSW of result to zeros.
Diffstat (limited to 'sim')
-rw-r--r--sim/sh/ChangeLog1
-rw-r--r--sim/sh/gencode.c4
2 files changed, 3 insertions, 2 deletions
diff --git a/sim/sh/ChangeLog b/sim/sh/ChangeLog
index 6d449ba..30322e9 100644
--- a/sim/sh/ChangeLog
+++ b/sim/sh/ChangeLog
@@ -1,5 +1,6 @@
2003-07-09 Michael Snyder <msnyder@redhat.com>
+ * gencode.c (prnd): Clear LSW of result to zeros.
* gencode.c (pmuls): Expression is mis-parenthesized.
* gencode.c (ppi_gensim): For a conditional ppi insn, if the
condition is false, we want to return (not break). A break
diff --git a/sim/sh/gencode.c b/sim/sh/gencode.c
index 9f5bcf0..f1601c5 100644
--- a/sim/sh/gencode.c
+++ b/sim/sh/gencode.c
@@ -1479,7 +1479,7 @@ op ppi_tab[] =
"int Sx = DSP_R (x);",
"int Sx_grd = GET_DSP_GRD (x);",
"",
- "res = Sx + 0x8000;",
+ "res = (Sx + 0x8000) & 0xffff0000;",
"carry = (unsigned) res < (unsigned) Sx;",
"res_grd = Sx_grd + carry;",
"COMPUTE_OVERFLOW;",
@@ -1512,7 +1512,7 @@ op ppi_tab[] =
"int Sy = DSP_R (y);",
"int Sy_grd = SIGN32 (Sy);",
"",
- "res = Sy + 0x8000;",
+ "res = (Sy + 0x8000) & 0xffff0000;",
"carry = (unsigned) res < (unsigned) Sy;",
"res_grd = Sy_grd + carry;",
"COMPUTE_OVERFLOW;",