From: DJ Delorie Date: Mon, 12 May 2014 23:05:19 +0000 (-0400) Subject: Support 32->64 sign extension in msp430's sign_ext X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a7da346e5c9dd33f4fdc9b053d1991131a911926;p=binutils-gdb.git Support 32->64 sign extension in msp430's sign_ext * msp43-sim.c (sign_ext): Change to "long long" to support sign-extending 32-bit values. --- diff --git a/sim/msp430/ChangeLog b/sim/msp430/ChangeLog index 4b76a03a154..77ea38008a2 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 693fdee627a..2dcbae33789 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;