X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gas%2Fconfig%2Ftc-nios2.c;h=f1a02001f8c59054621ac835ac23c4f0c3612511;hb=4f7cc14110d67a180f5408a91ac53a91f88f776e;hp=ec572a61ce63c80735d6f8b40d65aa386d167e29;hpb=84bc4ba8168154fae0da7d56dcd11df0d4bc44f2;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/config/tc-nios2.c b/gas/config/tc-nios2.c index ec572a61ce..f1a02001f8 100644 --- a/gas/config/tc-nios2.c +++ b/gas/config/tc-nios2.c @@ -1384,7 +1384,7 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) nios2_diagnose_overflow (fixup, howto, fixP, value); /* Apply the right shift. */ - fixup = ((signed)fixup) >> howto->rightshift; + fixup = (offsetT) fixup >> howto->rightshift; /* Truncate the fixup to right size. */ switch (fixP->fx_r_type) @@ -1396,13 +1396,11 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) fixup = fixup & 0xFFFF; break; case BFD_RELOC_NIOS2_HIADJ16: - fixup = ((((fixup >> 16) & 0xFFFF) + ((fixup >> 15) & 0x01)) - & 0xFFFF); + fixup = ((fixup + 0x8000) >> 16) & 0xFFFF; break; default: { - int n = sizeof (fixup) * 8 - howto->bitsize; - fixup = (fixup << n) >> n; + fixup &= ((valueT) 1 << howto->bitsize) - 1; break; } }