From: Mike Frysinger Date: Tue, 15 Mar 2011 20:10:12 +0000 (+0000) Subject: sim: bfin: skip acc/ASTAT updates for moves X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e3809a37d45651f2a08be03dda0b48275a6e04d8;p=binutils-gdb.git 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 Signed-off-by: Mike Frysinger --- diff --git a/sim/bfin/ChangeLog b/sim/bfin/ChangeLog index 45bf0a81bf1..deaf6158616 100644 --- a/sim/bfin/ChangeLog +++ b/sim/bfin/ChangeLog @@ -1,3 +1,7 @@ +2011-03-15 Robin Getz + + * bfin-sim.c (decode_macfunc): Move acc STOREs behind op != 3 check. + 2011-03-15 Robin Getz * bfin-sim.c (decode_macfunc): New neg parameter. Set when the 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);