aboutsummaryrefslogtreecommitdiff
path: root/sim/h8300
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@vmware.com>2003-07-18 00:08:23 +0000
committerMichael Snyder <msnyder@vmware.com>2003-07-18 00:08:23 +0000
commit0f42aa719da7ba1e3fa6d093f3ea8cda2c25b3f9 (patch)
tree5875ebd4e61db325781af24676e7dd540688e5b7 /sim/h8300
parent61fdd1259b031a9bef3cd0295a3149ad6bb6d1fd (diff)
downloadfsf-binutils-gdb-0f42aa719da7ba1e3fa6d093f3ea8cda2c25b3f9.zip
fsf-binutils-gdb-0f42aa719da7ba1e3fa6d093f3ea8cda2c25b3f9.tar.gz
fsf-binutils-gdb-0f42aa719da7ba1e3fa6d093f3ea8cda2c25b3f9.tar.bz2
2003-07-17 Michael Snyder <msnyder@redhat.com>
* compile.c (decode): IMM16 is always zero-extended.
Diffstat (limited to 'sim/h8300')
-rw-r--r--sim/h8300/ChangeLog4
-rw-r--r--sim/h8300/compile.c4
2 files changed, 7 insertions, 1 deletions
diff --git a/sim/h8300/ChangeLog b/sim/h8300/ChangeLog
index 2112ad9..77cb912 100644
--- a/sim/h8300/ChangeLog
+++ b/sim/h8300/ChangeLog
@@ -1,3 +1,7 @@
+2003-07-17 Michael Snyder <msnyder@redhat.com>
+
+ * compile.c (decode): IMM16 is always zero-extended.
+
2003-06-24 Michael Snyder <msnyder@redhat.com>
* sim-main.h (SIM_WIFSTOPPED, SIM_WSTOPSIG): Define.
diff --git a/sim/h8300/compile.c b/sim/h8300/compile.c
index 7635655..3819fdd 100644
--- a/sim/h8300/compile.c
+++ b/sim/h8300/compile.c
@@ -818,7 +818,9 @@ decode (SIM_DESC sd, int addr, unsigned char *data, decoded_inst *dst)
(looking_for & SIZE) == L_16U)
{
cst[opnum] = (data[len / 2] << 8) + data[len / 2 + 1];
- if ((looking_for & SIZE) != L_16U)
+ /* Immediates are always unsigned. */
+ if ((looking_for & SIZE) != L_16U &&
+ (looking_for & MODE) != IMM)
cst[opnum] = (short) cst[opnum]; /* Sign extend. */
}
else if (looking_for & ABSJMP)