* pe-dll.c (auto_export): Use bsearch to speed up scan of exports
[deliverable/binutils-gdb.git] / opcodes / arm-dis.c
index 2e6d4e8ef38a50a591f4e3dfe7027d250bb367f2..03062ad4d943d0bbd3882ef7e4e11766ba28fbc6 100644 (file)
@@ -2997,9 +2997,6 @@ print_insn_arm (bfd_vma pc, struct disassemble_info *info, long given)
                           /* PC relative with immediate offset.  */
                          bfd_vma offset = ((given & 0xf00) >> 4) | (given & 0xf);
 
-                         if (NEGATIVE_BIT_SET)
-                           offset = - offset;
-
                          if (PRE_BIT_SET)
                            {
                              /* Elide positive zero offset.  */
@@ -3143,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;
+
+                         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;
 
-                         immed = (((immed << (32 - rotate))
-                                   | (immed >> rotate)) & 0xffffffff);
-                         func (stream, "#%d", immed);
-                         value_in_comment = immed;
+                         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);
This page took 0.023402 seconds and 4 git commands to generate.