Jie Zhang <jie@codesourcery.com>
Julian Brown <julian@codesourcery.com> gas/ * config/tc-arm.c (parse_shifter_operand): Fix handling of explicit rotation. (encode_arm_shifter_operand): Likewise. gas/testsuite/ * gas/arm/adrl.d: Adjust. * gas/arm/immed2.d: New test. * gas/arm/immed2.s: New test. ld/testsuite/ * ld-arm/cortex-a8-fix-b-plt.d: Adjust. * ld-arm/cortex-a8-fix-bcc-plt.d: Adjust. * ld-arm/cortex-a8-fix-bl-plt.d: Adjust. * ld-arm/cortex-a8-fix-bl-rel-plt.d: Adjust. * ld-arm/cortex-a8-fix-blx-plt.d: Adjust. * ld-arm/ifunc-1.dd: Adjust. * ld-arm/ifunc-2.dd: Adjust. * ld-arm/ifunc-3.dd: Adjust. * ld-arm/ifunc-4.dd: Adjust. * ld-arm/ifunc-5.dd: Adjust. * ld-arm/ifunc-6.dd: Adjust. * ld-arm/ifunc-7.dd: Adjust. * ld-arm/ifunc-8.dd: Adjust. * ld-arm/ifunc-9.dd: Adjust. * ld-arm/ifunc-10.dd: Adjust. * ld-arm/ifunc-14.dd: Adjust. * ld-arm/ifunc-15.dd: Adjust. * ld-arm/ifunc-16.dd: Adjust. opcodes/ * arm-dis.c (print_insn_arm): Explicitly specify rotation if needed.
This commit is contained in:
parent
4af315526a
commit
a415b1cd63
27 changed files with 213 additions and 147 deletions
|
@ -3140,13 +3140,23 @@ print_insn_arm (bfd_vma pc, struct disassemble_info *info, long given)
|
|||
case 'o':
|
||||
if ((given & 0x02000000) != 0)
|
||||
{
|
||||
int rotate = (given & 0xf00) >> 7;
|
||||
int immed = (given & 0xff);
|
||||
unsigned int rotate = (given & 0xf00) >> 7;
|
||||
unsigned int immed = (given & 0xff);
|
||||
unsigned int a, i;
|
||||
|
||||
immed = (((immed << (32 - rotate))
|
||||
| (immed >> rotate)) & 0xffffffff);
|
||||
func (stream, "#%d", immed);
|
||||
value_in_comment = immed;
|
||||
a = (((immed << (32 - rotate))
|
||||
| (immed >> rotate)) & 0xffffffff);
|
||||
/* If there is another encoding with smaller rotate,
|
||||
the rotate should be specified directly. */
|
||||
for (i = 0; i < 32; i += 2)
|
||||
if ((a << i | a >> (32 - i)) <= 0xff)
|
||||
break;
|
||||
|
||||
if (i != rotate)
|
||||
func (stream, "#%d, %d", immed, rotate);
|
||||
else
|
||||
func (stream, "#%d", a);
|
||||
value_in_comment = a;
|
||||
}
|
||||
else
|
||||
arm_decode_shift (given, func, stream, TRUE);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue