aboutsummaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>1997-05-29 07:25:20 +0000
committerAndrew Cagney <cagney@redhat.com>1997-05-29 07:25:20 +0000
commit4e95b94e1eaa92c6694582bcb93e90df28d5ee33 (patch)
treeb59a82d0498ab76fc71b9d5054be809c9f133bef /sim
parentefe4f1cbf80c4508bfb97e4ae13db7bb1d1fa31d (diff)
downloadgdb-4e95b94e1eaa92c6694582bcb93e90df28d5ee33.zip
gdb-4e95b94e1eaa92c6694582bcb93e90df28d5ee33.tar.gz
gdb-4e95b94e1eaa92c6694582bcb93e90df28d5ee33.tar.bz2
Fix subu immed - was incorrectly using unsigned.
Diffstat (limited to 'sim')
-rw-r--r--sim/tic80/ChangeLog6
-rw-r--r--sim/tic80/alu.h3
-rw-r--r--sim/tic80/insns2
3 files changed, 10 insertions, 1 deletions
diff --git a/sim/tic80/ChangeLog b/sim/tic80/ChangeLog
index d0c56c0..62aecf2 100644
--- a/sim/tic80/ChangeLog
+++ b/sim/tic80/ChangeLog
@@ -1,3 +1,9 @@
+Thu May 29 12:09:13 1997 Andrew Cagney <cagney@b2.cygnus.com>
+
+ * alu.h (IMEM_IMMED): New macro, fetch 32bit immediate operand N.
+
+ * insns (subu i): Immediate is signed not unsigned.
+
Tue May 27 13:22:13 1997 Andrew Cagney <cagney@b1.cygnus.com>
* sim-calls.c (sim_read): Pass NULL cpu to sim_core_read_buffer.
diff --git a/sim/tic80/alu.h b/sim/tic80/alu.h
index 3f13759..ce40a01 100644
--- a/sim/tic80/alu.h
+++ b/sim/tic80/alu.h
@@ -41,6 +41,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#define IMEM(CIA) \
(sim_core_read_aligned_4(STATE_CPU (sd, 0), CIA, sim_core_execute_map, (CIA).ip))
+#define IMEM_IMMED(CIA, N) \
+(sim_core_read_aligned_4 (STATE_CPU (sd, 0), CIA, sim_core_execute_map, (CIA).ip + 4 * (N)))
+
#define MEM(SIGN, EA, NR_BYTES) \
((SIGN##_##NR_BYTES) sim_core_read_unaligned_##NR_BYTES (STATE_CPU (sd, 0), cia, \
sim_core_read_map, \
diff --git a/sim/tic80/insns b/sim/tic80/insns
index ad71d21..a3aceae 100644
--- a/sim/tic80/insns
+++ b/sim/tic80/insns
@@ -988,7 +988,7 @@ void::function::do_subu:unsigned32 *rDest, unsigned32 Source1, signed32 Source2
TRACE_ALU3 (MY_INDEX, result, Source1, Source2);
*rDest = result;
// NOTE - the book has 15.1 which conflicts with subu.
-31.Dest,26.Source2,21.0b101101,15.1,14.UnsignedImmediate::::subu i
+31.Dest,26.Source2,21.0b101101,15.1,14.SignedImmediate::::subu i
do_subu (_SD, rDest, vSource1, vSource2);
31.Dest,26.Source2,21.0b11101101,13.1,12.0,11./,4.Source1::::subu r
do_subu (_SD, rDest, vSource1, vSource2);