From a7da346e5c9dd33f4fdc9b053d1991131a911926 Mon Sep 17 00:00:00 2001 From: DJ Delorie Date: Mon, 12 May 2014 19:05:19 -0400 Subject: [PATCH] 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. --- sim/msp430/ChangeLog | 5 +++++ sim/msp430/msp430-sim.c | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) 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; -- 2.30.2