* hppa-dis.c (print_insn_hppa): Handle 'm', 'h', '='.
authorJeff Law <law@redhat.com>
Sun, 19 Sep 1999 18:50:17 +0000 (18:50 +0000)
committerJeff Law <law@redhat.com>
Sun, 19 Sep 1999 18:50:17 +0000 (18:50 +0000)
opcodes/ChangeLog
opcodes/hppa-dis.c

index 15ab5fce6f0a12ffbf78faac0b90d787e989b903..c5aed2a4dc1840328985e0bc588c36dfd6d32ac7 100644 (file)
@@ -1,5 +1,7 @@
 Sun Sep 19 10:41:27 1999  Jeffrey A Law  (law@cygnus.com)
 
+       * hppa-dis.c (print_insn_hppa): Handle 'm', 'h', '='.
+
        * hppa-dis.c (print_insn_hppa): Handle 'X' operand.
 
        * hppa-dis.c (print_insn_hppa): Handle 'B' operand.
index 249002bb9d0751d390087b8998a830adfa15c4c1..099186a234948973327bd6d5548fbabda5d4ed06 100644 (file)
@@ -902,6 +902,55 @@ print_insn_hppa (memaddr, info)
                                           float_format_names[GET_FIELD
                                                              (insn, 20, 20)]);
                  break;
+               /* ?!? FIXME */
+               case '_':
+               case '{':
+                 fputs_filtered ("Disassembler botch.\n", info);
+                 break;
+
+               case 'm':
+                 {
+                   int y = GET_FIELD (insn, 16, 18);
+
+                   if (y != 1)
+                     fput_const ((y ^ 1) - 1, info);
+                 }
+                 break;
+
+               case 'h':
+                 {
+                   int cbit;
+
+                   cbit = GET_FIELD (insn, 16, 18);
+
+                   if (cbit > 0)
+                     (*info->fprintf_func) (info->stream, ",%d", cbit - 1);
+                   break;
+                 }
+
+               case '=':
+                 {
+                   int cond = GET_FIELD (insn, 27, 31);
+
+                   if (cond == 0)
+                     fputs_filtered (" ", info);
+                   else if (cond == 1)
+                     fputs_filtered ("acc ", info);
+                   else if (cond == 2)
+                     fputs_filtered ("rej ", info);
+                   else if (cond == 5)
+                     fputs_filtered ("acc8 ", info);
+                   else if (cond == 6)
+                     fputs_filtered ("rej8 ", info);
+                   else if (cond == 9)
+                     fputs_filtered ("acc6 ", info);
+                   else if (cond == 13)
+                     fputs_filtered ("acc4 ", info);
+                   else if (cond == 17)
+                     fputs_filtered ("acc2 ", info);
+                   break;
+                 }
+
                case 'X':
                  (*info->print_address_func) ((memaddr + 8 
                                                + extract_22 (insn)),