This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] sim: bfin: fix M_IH saturation size


From: Robin Getz <robin.getz@analog.com>

This reverts the previous commit and does it right.  This change got
lost in the shuffle of patches I have pending.

Basically the logic is to change the 32bit saturation (and then masked
to 16bits) to a proper 16bit saturation.

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>

2011-06-18  Robin Getz  <robin.getz@analog.com>

	* bfin-sim.c (extract_mult): Call saturate_s16 directly when
	mmod is M_IH rather than computing the result by hand.

diff --git a/sim/bfin/bfin-sim.c b/sim/bfin/bfin-sim.c
index 71fda3e..38e5fe1 100644
--- a/sim/bfin/bfin-sim.c
+++ b/sim/bfin/bfin-sim.c
@@ -1534,19 +1534,8 @@ extract_mult (SIM_CPU *cpu, bu64 res, int mmod, int MM,
       {
       case 0:
       case M_W32:
+      case M_IH:
 	return saturate_s16 (rnd16 (res), overflow);
-      case M_IH:
-	{
-	  bu32 sgn = !!(res >> 39);
-	  bu16 val = rnd16 (saturate_s32 (res, overflow));
-	  bu32 sgn0 = (val >> 15) & 1;
-	  if (sgn == sgn0 || !val)
-	    return val;
-	  if (sgn)
-	    return 0x8000;
-	  *overflow = 1;
-	  return 0x7FFF;
-	}
       case M_IS:
 	return saturate_s16 (res, overflow);
       case M_FU:
-- 
1.7.5.3


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]