(check_range): Ensure that the sign bit of a 32-bit value is propagated into
the upper bits of a 64-bit long.
This commit is contained in:
parent
52de4c0655
commit
70e45ad9bb
2 changed files with 9 additions and 0 deletions
|
@ -1,5 +1,8 @@
|
||||||
2006-02-10 Nick Clifton <nickc@redhat.com>
|
2006-02-10 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* config/tc-crx.c (check_range): Ensure that the sign bit of a
|
||||||
|
32-bit value is propagated into the upper bits of a 64-bit long.
|
||||||
|
|
||||||
* config/tc-arc.c (init_opcode_tables): Fix cast.
|
* config/tc-arc.c (init_opcode_tables): Fix cast.
|
||||||
(arc_extoper, md_operand): Likewise.
|
(arc_extoper, md_operand): Likewise.
|
||||||
|
|
||||||
|
|
|
@ -1378,6 +1378,12 @@ check_range (long *num, int bits, int unsigned flags, int update)
|
||||||
long upper_64kb = 0xFFFF0000;
|
long upper_64kb = 0xFFFF0000;
|
||||||
long value = *num;
|
long value = *num;
|
||||||
|
|
||||||
|
/* For hosts witah longs bigger than 32-bits make sure that the top
|
||||||
|
bits of a 32-bit negative value read in by the parser are set,
|
||||||
|
so that the correct comparisons are made. */
|
||||||
|
if (value & 0x80000000)
|
||||||
|
value |= (-1L << 31);
|
||||||
|
|
||||||
/* Verify operand value is even. */
|
/* Verify operand value is even. */
|
||||||
if (flags & OP_EVEN)
|
if (flags & OP_EVEN)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue