diff --git a/sim/msp430/ChangeLog b/sim/msp430/ChangeLog index 4b76a03a15..77ea38008a 100644 --- a/sim/msp430/ChangeLog +++ b/sim/msp430/ChangeLog @@ -1,3 +1,8 @@ +2014-05-12 DJ Delorie + + * msp43-sim.c (sign_ext): Change to "long long" to support + sign-extending 32-bit values. + 2014-05-08 Nick Clifton * 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 693fdee627..2dcbae3378 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;