Patches from WRS:
authorIan Lance Taylor <ian@airs.com>
Mon, 21 Sep 1992 22:36:04 +0000 (22:36 +0000)
committerIan Lance Taylor <ian@airs.com>
Mon, 21 Sep 1992 22:36:04 +0000 (22:36 +0000)
Mon Sep 21 14:54:35 1992  Ian Lance Taylor  (ian@cygnus.com)

* m68k-pinsn (print_insn_arg, fetch_arg): added support for
operands to memory management instructions, from WRS.

gdb/ChangeLog
gdb/m68k-pinsn.c

index df5e8bf666b047159c4b4afed0ea6a82d033358a..82e75a0d9d48056646a71a593309166a068e20dd 100644 (file)
@@ -1,3 +1,8 @@
+Mon Sep 21 14:54:35 1992  Ian Lance Taylor  (ian@cygnus.com)
+
+       * m68k-pinsn (print_insn_arg, fetch_arg): added support for
+       operands to memory management instructions, from WRS.
+
 Sep 20 08:42:12 1992  Fred Fish  (fnf@cygnus.com)
 
        * main.c (main):  Back out previous language setting changes.
index 7f442d5024136b9eb2a345c9aa1ea3a0b4a427b5..859d8d9dd77c21a3f51b317a9e83d8fecfcf4463 100644 (file)
@@ -188,6 +188,30 @@ print_insn_arg (d, buffer, p, addr, stream)
 
   switch (*d)
     {
+    case 'c':          /* cache identifier */
+      {
+        static char *cacheFieldName[] = { "NOP", "dc", "ic", "bc" };
+        val = fetch_arg (buffer, place, 2);
+        fprintf_filtered (stream, cacheFieldName[val]);
+        break;
+      }
+
+    case 'a':          /* address register indirect only. Cf. case '+'. */
+      {
+        fprintf_filtered (stream,
+                         "%s@",
+                         reg_names [fetch_arg (buffer, place, 3) + 8]);
+        break;
+      }
+
+    case '_':          /* 32-bit absolute address for move16. */
+      {
+        val = NEXTLONG (p);
+        fprintf_filtered (stream, "@#");
+       print_address (val, stream);
+        break;
+      }
+
     case 'C':
       fprintf_filtered (stream, "ccr");
       break;
@@ -204,8 +228,11 @@ print_insn_arg (d, buffer, p, addr, stream)
       {
        static struct { char *name; int value; } names[]
          = {{"sfc", 0x000}, {"dfc", 0x001}, {"cacr", 0x002},
+            {"tc",  0x003}, {"itt0",0x004}, {"itt1", 0x005},
+             {"dtt0",0x006}, {"dtt1",0x007},
             {"usp", 0x800}, {"vbr", 0x801}, {"caar", 0x802},
-            {"msp", 0x803}, {"isp", 0x804}};
+            {"msp", 0x803}, {"isp", 0x804}, {"mmusr",0x805},
+             {"urp", 0x806}, {"srp", 0x807}};
 
        val = fetch_arg (buffer, place, 12);
        for (regno = sizeof names / sizeof names[0] - 1; regno >= 0; regno--)
@@ -659,12 +686,18 @@ fetch_arg (buffer, code, bits)
       val >>= 10;
       break;
 
+    case 'e':
+      val = (buffer[1] >> 6);
+      break;
+
     default:
       abort ();
     }
 
   switch (bits)
     {
+    case 2:
+      return val & 3;
     case 3:
       return val & 7;
     case 4: