OSDN Git Service

Add support for unindexed form of Addressing Mode 5
authorNick Clifton <nickc@redhat.com>
Tue, 19 Aug 2003 13:05:41 +0000 (13:05 +0000)
committerNick Clifton <nickc@redhat.com>
Tue, 19 Aug 2003 13:05:41 +0000 (13:05 +0000)
opcodes/ChangeLog
opcodes/arm-dis.c

index 02a6d17..077c4ed 100644 (file)
@@ -1,3 +1,8 @@
+2003-08-19  Nick Clifton  <nickc@redhat.com>
+
+       * arm-dis.c (print_insn_arm: case 'A'): Add code to
+       disassemble unindexed form of Addressing Mode 5.
+
 2003-08-19  Alan Modra  <amodra@bigpond.net.au>
 
        * ppc-opc.c (PPC440): Define.
index 97ec842..ac36e88 100644 (file)
@@ -445,9 +445,11 @@ print_insn_arm (pc, info, given)
 
                    case 'A':
                      func (stream, "[%s", arm_regnames [(given >> 16) & 0xf]);
-                     if ((given & 0x01000000) != 0)
+
+                     if ((given & (1 << 24)) != 0)
                        {
                          int offset = given & 0xff;
+
                          if (offset)
                            func (stream, ", %s#%d]%s",
                                  ((given & 0x00800000) == 0 ? "-" : ""),
@@ -459,12 +461,18 @@ print_insn_arm (pc, info, given)
                      else
                        {
                          int offset = given & 0xff;
-                         if (offset)
-                           func (stream, "], %s#%d",
-                                 ((given & 0x00800000) == 0 ? "-" : ""),
-                                 offset * 4);
+
+                         func (stream, "]");
+
+                         if (given & (1 << 21))
+                           {
+                             if (offset)
+                               func (stream, ", %s#%d",
+                                     ((given & 0x00800000) == 0 ? "-" : ""),
+                                     offset * 4);
+                           }
                          else
-                           func (stream, "]");
+                           func (stream, ", {%d}", offset);
                        }
                      break;