summaryrefslogtreecommitdiff
path: root/opcodes/ns32k-dis.c
diff options
context:
space:
mode:
Diffstat (limited to 'opcodes/ns32k-dis.c')
-rw-r--r--opcodes/ns32k-dis.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/opcodes/ns32k-dis.c b/opcodes/ns32k-dis.c
index 5e6f0964b7a..e43fff712ab 100644
--- a/opcodes/ns32k-dis.c
+++ b/opcodes/ns32k-dis.c
@@ -327,8 +327,8 @@ bit_copy (bfd_byte *buffer, int offset, int count, char *to)
static int
sign_extend (unsigned int value, unsigned int bits)
{
- unsigned int sign = 1u << bits;
- return ((value & (sign - 1)) ^ sign) - sign;
+ unsigned int sign = 1u << (bits - 1);
+ return ((value & (sign + sign - 1)) ^ sign) - sign;
}
static void