From b4876e0485f5d16a5d9e213c0b15466323170cf0 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sat, 18 Jun 2011 21:59:38 +0000 Subject: sim: bfin: do not touch ASTAT[V] when shifting accumulators If we're shifting accumulators, we don't want to touch the V bit in ASTAT, so add size checks to the ashiftrt/lshiftrt helpers. Signed-off-by: Robin Getz Signed-off-by: Mike Frysinger --- sim/bfin/bfin-sim.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'sim/bfin/bfin-sim.c') diff --git a/sim/bfin/bfin-sim.c b/sim/bfin/bfin-sim.c index 2c71f6c..dbfce6c 100644 --- a/sim/bfin/bfin-sim.c +++ b/sim/bfin/bfin-sim.c @@ -713,8 +713,8 @@ ashiftrt (SIM_CPU *cpu, bu40 val, int cnt, int size) val |= sgn; SET_ASTATREG (an, val >> (size - 1)); SET_ASTATREG (az, val == 0); - /* XXX: Need to check ASTAT[v] behavior here. */ - SET_ASTATREG (v, 0); + if (size != 40) + SET_ASTATREG (v, 0); return val; } @@ -742,7 +742,8 @@ lshiftrt (SIM_CPU *cpu, bu64 val, int cnt, int size) } SET_ASTATREG (an, val >> (size - 1)); SET_ASTATREG (az, val == 0); - SET_ASTATREG (v, 0); + if (size != 40) + SET_ASTATREG (v, 0); return val; } -- cgit v1.1