* m68hc11-dis.c (print_insn): Treat bitmask and branch operands
authorStephane Carrez <stcarrez@nerim.fr>
Sun, 13 Oct 2002 09:01:54 +0000 (09:01 +0000)
committerStephane Carrez <stcarrez@nerim.fr>
Sun, 13 Oct 2002 09:01:54 +0000 (09:01 +0000)
at the end.

opcodes/ChangeLog
opcodes/m68hc11-dis.c

index 6128a7d1cfa4b16a71693c89d45fca5670501d18..0e31186d9bd2abf3c4cccf3791f4794f58f8f495 100644 (file)
@@ -1,3 +1,8 @@
+2002-10-13  Stephane Carrez  <stcarrez@nerim.fr>
+
+       * m68hc11-dis.c (print_insn): Treat bitmask and branch operands
+       at the end.
+
 2002-09-30  Gavin Romig-Koch  <gavin@redhat.com>
             Ken Raeburn  <raeburn@cygnus.com>
             Aldy Hernandez  <aldyh@redhat.com>
index c721d16e0c43d3c3a8b032303fcff09554b15b46..bcd3ee5103fd0888593f610f53e66d6b8b64284c 100644 (file)
@@ -495,55 +495,6 @@ print_insn (memaddr, info, arch)
                                 reg_dst_table[(buffer[0] & 7)]);
        }
 
-      /* M6811_OP_BITMASK and M6811_OP_JUMP_REL must be treated separately
-         and in that order.  The brset/brclr insn have a bitmask and then
-         a relative branch offset.  */
-      if (format & M6811_OP_BITMASK)
-       {
-         status = read_memory (memaddr + pos, &buffer[0], 1, info);
-         if (status != 0)
-           {
-             return status;
-           }
-         pos++;
-         (*info->fprintf_func) (info->stream, " #$%02x%s",
-                                buffer[0] & 0x0FF,
-                                (format & M6811_OP_JUMP_REL ? " " : ""));
-         format &= ~M6811_OP_BITMASK;
-       }
-      if (format & M6811_OP_JUMP_REL)
-       {
-         int val;
-
-         status = read_memory (memaddr + pos, &buffer[0], 1, info);
-         if (status != 0)
-           {
-             return status;
-           }
-
-         pos++;
-         val = (buffer[0] & 0x80) ? buffer[0] | 0xFFFFFF00 : buffer[0];
-         (*info->print_address_func) (memaddr + pos + val, info);
-         format &= ~M6811_OP_JUMP_REL;
-       }
-      else if (format & M6812_OP_JUMP_REL16)
-       {
-         int val;
-
-         status = read_memory (memaddr + pos, &buffer[0], 2, info);
-         if (status != 0)
-           {
-             return status;
-           }
-
-         pos += 2;
-         val = ((buffer[0] << 8) | (buffer[1] & 0x0FF));
-         if (val & 0x8000)
-           val |= 0xffff0000;
-
-         (*info->print_address_func) (memaddr + pos + val, info);
-         format &= ~M6812_OP_JUMP_REL16;
-       }
       if (format & (M6811_OP_IMM16 | M6811_OP_IND16))
        {
          int val;
@@ -641,6 +592,56 @@ print_insn (memaddr, info, arch)
          (*info->print_address_func) (val, info);
        }
 
+      /* M6811_OP_BITMASK and M6811_OP_JUMP_REL must be treated separately
+         and in that order.  The brset/brclr insn have a bitmask and then
+         a relative branch offset.  */
+      if (format & M6811_OP_BITMASK)
+       {
+         status = read_memory (memaddr + pos, &buffer[0], 1, info);
+         if (status != 0)
+           {
+             return status;
+           }
+         pos++;
+         (*info->fprintf_func) (info->stream, " #$%02x%s",
+                                buffer[0] & 0x0FF,
+                                (format & M6811_OP_JUMP_REL ? " " : ""));
+         format &= ~M6811_OP_BITMASK;
+       }
+      if (format & M6811_OP_JUMP_REL)
+       {
+         int val;
+
+         status = read_memory (memaddr + pos, &buffer[0], 1, info);
+         if (status != 0)
+           {
+             return status;
+           }
+
+         pos++;
+         val = (buffer[0] & 0x80) ? buffer[0] | 0xFFFFFF00 : buffer[0];
+         (*info->print_address_func) (memaddr + pos + val, info);
+         format &= ~M6811_OP_JUMP_REL;
+       }
+      else if (format & M6812_OP_JUMP_REL16)
+       {
+         int val;
+
+         status = read_memory (memaddr + pos, &buffer[0], 2, info);
+         if (status != 0)
+           {
+             return status;
+           }
+
+         pos += 2;
+         val = ((buffer[0] << 8) | (buffer[1] & 0x0FF));
+         if (val & 0x8000)
+           val |= 0xffff0000;
+
+         (*info->print_address_func) (memaddr + pos + val, info);
+         format &= ~M6812_OP_JUMP_REL16;
+       }
+
       if (format & M6812_OP_PAGE)
        {
          int val;