aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sim/msp430/ChangeLog5
-rw-r--r--sim/msp430/msp430-sim.c8
2 files changed, 9 insertions, 4 deletions
diff --git a/sim/msp430/ChangeLog b/sim/msp430/ChangeLog
index 4b76a03..77ea380 100644
--- a/sim/msp430/ChangeLog
+++ b/sim/msp430/ChangeLog
@@ -1,3 +1,8 @@
+2014-05-12 DJ Delorie <dj@redhat.com>
+
+ * msp43-sim.c (sign_ext): Change to "long long" to support
+ sign-extending 32-bit values.
+
2014-05-08 Nick Clifton <nickc@redhat.com>
* msp430-sim.c (sim_open): Do not allocate memory over the
diff --git a/sim/msp430/msp430-sim.c b/sim/msp430/msp430-sim.c
index 693fdee..2dcbae3 100644
--- a/sim/msp430/msp430-sim.c
+++ b/sim/msp430/msp430-sim.c
@@ -337,11 +337,11 @@ zero_ext (unsigned int v, unsigned int bits)
return v;
}
-static signed int
-sign_ext (signed int v, unsigned int bits)
+static signed long long
+sign_ext (signed long long v, unsigned int bits)
{
- int sb = 1 << (bits-1); /* Sign bit. */
- int mb = (1 << (bits-1)) - 1; /* Mantissa bits. */
+ signed long long sb = 1LL << (bits-1); /* Sign bit. */
+ signed long long mb = (1LL << (bits-1)) - 1LL; /* Mantissa bits. */
if (v & sb)
v = v | ~mb;