* Rename remote-es1800.c to remote-es.c
[deliverable/binutils-gdb.git] / gdb / hppa-pinsn.c
index 0f0fec1472d3fc8d5872f0e38dfdb8540f2c0761..a22b3d67e1434da7692f0fb1ed4c349ffc0f90f3 100644 (file)
@@ -22,6 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #include "defs.h"
 #include "symtab.h"
+#define OLD_TABLE
 #include "opcode/hppa.h"
 
 static char *control_reg[] =
@@ -87,9 +88,10 @@ print_insn (memaddr, stream)
      CORE_ADDR memaddr;
      FILE *stream;
 {
-  unsigned int insn, i, op;
+  long insn;
+  unsigned int i, op;
 
-  read_memory (memaddr, &insn, sizeof (insn));
+  insn = read_memory_integer (memaddr, sizeof (insn));
 
   for (i = 0; i < NUMOPCODES; ++i)
     {
@@ -100,7 +102,7 @@ print_insn (memaddr, stream)
          
          fputs_filtered (opcode->name, stream);
        
-         if (!index ("cCY<?!@-+&U>~nZFM", opcode->args[0]))
+         if (!index ("cCY<?!@-+&U>~nZFIM", opcode->args[0]))
            fputs_filtered (" ", stream);
          for (s = opcode->args; *s != '\0'; ++s)
            {
@@ -214,6 +216,12 @@ print_insn (memaddr, stream)
                case 'V':
                  fput_const (extract_5_store (insn), stream);
                  break;
+               case 'r':
+                 fput_const (extract_5r_store (insn), stream);
+                 break;
+               case 'R':
+                 fput_const (extract_5R_store (insn), stream);
+                 break;
                case 'i':
                  fput_const (extract_11 (insn), stream);
                  break;
@@ -321,6 +329,29 @@ print_insn (memaddr, stream)
                    fputs_filtered (float_format_names[GET_FIELD 
                                                       (insn, 26, 26)], stream);
                  break;
+               case 'I':
+                 /* if no destination completer, need a space here */
+                 if (GET_FIELD (insn, 21, 22) == 1)
+                   fputs_filtered (float_format_names[GET_FIELD (insn, 20, 20)],
+                                   stream);
+                 else
+                   fprintf_filtered (stream, "%s ",
+                                     float_format_names[GET_FIELD
+                                                        (insn, 20, 20)]);
+                 break;
+               case 'J':
+                  if (GET_FIELD (insn, 24, 24))
+                     fput_reg_r (GET_FIELD (insn, 6, 10), stream);
+                 else
+                     fput_reg (GET_FIELD (insn, 6, 10), stream);
+                     
+                 break;
+               case 'K':
+                  if (GET_FIELD (insn, 19, 19))
+                     fput_reg_r (GET_FIELD (insn, 11, 15), stream);
+                 else
+                     fput_reg (GET_FIELD (insn, 11, 15), stream);
+                 break;
                case 'M':
                  fputs_filtered (float_comp_names[GET_FIELD (insn, 27, 31)],
                                  stream);
@@ -354,14 +385,15 @@ print_insn (memaddr, stream)
          if (op == 0x38 /* be */ || op == 0x39 /* ble */)
            {
              CORE_ADDR target_address;
-             unsigned int prev_insn;
+             long prev_insn;
              int basereg, basereg_prev;
 
              target_address = extract_17 (insn);
              basereg = GET_FIELD (insn, 6, 10);
              if (basereg != 0)
                {
-                 read_memory (memaddr - 4, &prev_insn, sizeof(prev_insn));
+                 prev_insn = read_memory_integer (memaddr - 4,
+                                                  sizeof(prev_insn));
                  basereg_prev = GET_FIELD (prev_insn, 6, 10);
 
                  if ((prev_insn & 0xfc000000) == 0x20000000 /* ldil */
This page took 0.023928 seconds and 4 git commands to generate.