summaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2011-03-15 20:10:12 +0000
committerMike Frysinger <vapier@gentoo.org>2011-03-15 20:10:12 +0000
commit42ca845af2fa8a1f179d962f8d6b6f1eb1f785de (patch)
tree7117e5d88413f26d0c0eba4b902e126545283493 /sim
parent47f7bb8721a67744f6c986221fdcdb5daab55465 (diff)
downloadgdb-42ca845af2fa8a1f179d962f8d6b6f1eb1f785de.tar.gz
sim: bfin: skip acc/ASTAT updates for moves
No point in moving unchanged acc values to the acc regs, and avoid updating the acc ASTAT bits when only reading. This fixes incorrect changing of the ASTAT bits when they're only being read. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'sim')
-rw-r--r--sim/bfin/ChangeLog4
-rw-r--r--sim/bfin/bfin-sim.c12
2 files changed, 10 insertions, 6 deletions
diff --git a/sim/bfin/ChangeLog b/sim/bfin/ChangeLog
index 45bf0a81bf1..deaf6158616 100644
--- a/sim/bfin/ChangeLog
+++ b/sim/bfin/ChangeLog
@@ -1,5 +1,9 @@
2011-03-15 Robin Getz <robin.getz@analog.com>
+ * bfin-sim.c (decode_macfunc): Move acc STOREs behind op != 3 check.
+
+2011-03-15 Robin Getz <robin.getz@analog.com>
+
* bfin-sim.c (decode_macfunc): New neg parameter. Set when the
high bit is set after extract_mult.
(decode_dsp32mac_0): Declare n_1 and n_0. Pass to the decode_macfunc
diff --git a/sim/bfin/bfin-sim.c b/sim/bfin/bfin-sim.c
index ba0e0c2c56f..14cf41ad70d 100644
--- a/sim/bfin/bfin-sim.c
+++ b/sim/bfin/bfin-sim.c
@@ -1662,13 +1662,13 @@ decode_macfunc (SIM_CPU *cpu, int which, int op, int h0, int h1, int src0,
if (acc & 0x8000000000ull)
*neg = 1;
- }
- STORE (AXREG (which), (acc >> 32) & 0xff);
- STORE (AWREG (which), acc & 0xffffffff);
- STORE (ASTATREG (av[which]), sat);
- if (sat)
- STORE (ASTATREG (avs[which]), sat);
+ STORE (AXREG (which), (acc >> 32) & 0xff);
+ STORE (AWREG (which), acc & 0xffffffff);
+ STORE (ASTATREG (av[which]), sat);
+ if (sat)
+ STORE (ASTATREG (avs[which]), sat);
+ }
ret = extract_mult (cpu, acc, mmod, MM, fullword, overflow);