* hppa-dis.c (print_insn_hppa): Handle '#', 'd', and 'cq'.
authorJeff Law <law@redhat.com>
Sun, 19 Sep 1999 19:29:37 +0000 (19:29 +0000)
committerJeff Law <law@redhat.com>
Sun, 19 Sep 1999 19:29:37 +0000 (19:29 +0000)
opcodes/ChangeLog
opcodes/hppa-dis.c

index c5aed2a4dc1840328985e0bc588c36dfd6d32ac7..7e3d3505a9ceb118c62ec9db033c1f36d538743e 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 '#', 'd', and 'cq'.
+
        * hppa-dis.c (print_insn_hppa): Handle 'm', 'h', '='.
 
        * hppa-dis.c (print_insn_hppa): Handle 'X' operand.
index 099186a234948973327bd6d5548fbabda5d4ed06..6e8df747a3fa9d9a032d7c239a027df25fd1ad36 100644 (file)
@@ -490,6 +490,12 @@ print_insn_hppa (memaddr, info)
                      (*info->fprintf_func) (info->stream, "%s ",
                                             short_ldst_compl_names[GET_COMPL (insn)]);
                      break;
+                   case 'q':
+                     (*info->fprintf_func)
+                       (info->stream, "%s ",
+                        short_ldst_compl_names[(GET_FIELD (insn, 28, 28)
+                                                | GET_FIELD (insn, 29, 29))]);
+                     break;
                    case 's':
                      (*info->fprintf_func) (info->stream, "%s ",
                                             short_bytes_compl_names[GET_COMPL (insn)]);
@@ -902,6 +908,37 @@ print_insn_hppa (memaddr, info)
                                           float_format_names[GET_FIELD
                                                              (insn, 20, 20)]);
                  break;
+               case '#':
+                 {
+                   int sign = GET_FIELD (insn, 31, 31);
+                   int imm10 = GET_FIELD (insn, 18, 27);
+                   int disp;
+
+                   if (sign)
+                     disp = (-1 << 10) | imm10;
+                   else
+                     disp = imm10;
+
+                   disp <<= 3;
+                   fput_const (disp, info);
+                   break;
+                 }
+               case 'd':
+                 {
+                   int sign = GET_FIELD (insn, 31, 31);
+                   int imm11 = GET_FIELD (insn, 18, 28);
+                   int disp;
+
+                   if (sign)
+                     disp = (-1 << 11) | imm11;
+                   else
+                     disp = imm11;
+
+                   disp <<= 2;
+                   fput_const (disp, info);
+                   break;
+                 }
+
                /* ?!? FIXME */
                case '_':
                case '{':