aboutsummaryrefslogtreecommitdiff
path: root/sim/bfin/bfin-sim.c
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2011-06-18 22:03:10 +0000
committerMike Frysinger <vapier@gentoo.org>2011-06-18 22:03:10 +0000
commit1f20b1457b31ca6925063318467fec344a236de3 (patch)
treecc049b5c3954aa305de6f9939121518624693913 /sim/bfin/bfin-sim.c
parentb4876e0485f5d16a5d9e213c0b15466323170cf0 (diff)
downloadfsf-binutils-gdb-1f20b1457b31ca6925063318467fec344a236de3.zip
fsf-binutils-gdb-1f20b1457b31ca6925063318467fec344a236de3.tar.gz
fsf-binutils-gdb-1f20b1457b31ca6925063318467fec344a236de3.tar.bz2
sim: bfin: set ASTAT AV/AVS when shifting accumulators overflow
The LSHIFT/ASHIFT insns that work with accumulators lacked AV/AVS handling in the ASTAT register, so add it to match the hardware. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'sim/bfin/bfin-sim.c')
-rw-r--r--sim/bfin/bfin-sim.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sim/bfin/bfin-sim.c b/sim/bfin/bfin-sim.c
index dbfce6c..fe4dc26 100644
--- a/sim/bfin/bfin-sim.c
+++ b/sim/bfin/bfin-sim.c
@@ -5223,6 +5223,9 @@ decode_dsp32shift_0 (SIM_CPU *cpu, bu16 iw0, bu16 iw1)
STORE (AXREG (HLs), (val >> 32) & 0xff);
STORE (AWREG (HLs), (val & 0xffffffff));
+ STORE (ASTATREG (av[HLs]), val == 0);
+ if (val == 0)
+ STORE (ASTATREG (avs[HLs]), 1);
}
else if (sop == 1 && sopcde == 3 && (HLs == 0 || HLs == 1))
{
@@ -5240,6 +5243,9 @@ decode_dsp32shift_0 (SIM_CPU *cpu, bu16 iw0, bu16 iw1)
STORE (AXREG (HLs), (val >> 32) & 0xff);
STORE (AWREG (HLs), (val & 0xffffffff));
+ STORE (ASTATREG (av[HLs]), val == 0);
+ if (val == 0)
+ STORE (ASTATREG (avs[HLs]), 1);
}
else if ((sop == 0 || sop == 1) && sopcde == 1)
{