]> rtime.felk.cvut.cz Git - fpga/lx-cpu1/binutils-tumbl.git/blobdiff - opcodes/microblaze-dis.c
MBTumbl: Update ITxxx instructions to new format, add some macros that were disabled
[fpga/lx-cpu1/binutils-tumbl.git] / opcodes / microblaze-dis.c
index 2ecec054dabbb298c41d778364139590b0dd95c1..f52ae44c04c05cd0d37dc79a006c1fa1c9389120 100644 (file)
@@ -89,7 +89,7 @@ get_field_imm15 (long instr)
 #else
 
 static char *
-get_field_itt_cond (long instr)
+get_field_cond (long instr)
 {
   const char *cond = NULL; 
 
@@ -120,29 +120,6 @@ get_field_itt_cond (long instr)
   return (strdup (cond));
 }
 
-static char *
-get_field_itt (long instr)
-{
-  const char *cond_type = NULL; 
-
-  switch ((instr & COND_TYPE_MASK) >> COND_TYPE_LOW)
-  {
-    case COND_TYPE_IT:
-      cond_type = "it";
-      break;
-    case COND_TYPE_ITT:
-      cond_type = "itt";
-      break;
-    case COND_TYPE_ITE:
-      cond_type = "ite";
-      break;
-  }
-
-  if (cond_type == NULL)
-    return NULL;
-  return (strdup (cond_type));
-}
-
 #endif
 
 static char *
@@ -243,7 +220,7 @@ read_insn_microblaze (bfd_vma memaddr,
 
   /* Just a linear search of the table.  */
   for (op = opcodes; op->name != 0; op ++)
-    if ((op->bit_sequence == (inst & op->opcode_mask)) && (op->inst_type != pseudo_inst))
+    if ((op->bit_sequence == (inst & op->opcode_mask)))
       break;
 
   *opr = op;
@@ -263,10 +240,6 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info)
   static bfd_vma      prev_insn_addr = -1; /* Init the prev insn addr.  */
   static int          prev_insn_vma = -1;  /* Init the prev insn vma.  */
   int                 curr_insn_vma = info->buffer_vma;
-#ifdef ARCH_mbtumbl
-  char *              cmp_cond;
-  char *              cmp_cond_type;
-#endif
 
   info->bytes_per_chunk = 4;
 
@@ -309,21 +282,22 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info)
         case INST_TYPE_RD_R1_R2:
           print_func (stream, "\t%s, %s, %s", get_field_rd (inst),
                   get_field_r1(inst), get_field_r2 (inst));
-
+                  break;
 #ifdef ARCH_mbtumbl
-          /* Maybe CMP with ITT */
-          if (!strcmp(op->name, "cmp") || !strcmp(op->name, "cmpu"))
-          {
-            cmp_cond = get_field_itt_cond(inst);
-            cmp_cond_type = get_field_itt(inst);
-            if (cmp_cond && cmp_cond_type)
-              print_func (stream, "\t\t%s\t%s", cmp_cond_type, cmp_cond);
-          }
-          break;
+        case INST_TYPE_COND_R1_R2:
+                                       print_func (stream, "\t%s, %s, %s", get_field_cond (inst),
+                  get_field_r1(inst), get_field_r2 (inst));
+                  break;
 #endif
         case INST_TYPE_RD_R1_IMM:
-         print_func (stream, "\t%s, %s, %s", get_field_rd (inst),
-                  get_field_r1(inst), get_field_imm (inst));
+        case INST_TYPE_COND_R1_IMM:
+               if (op->inst_type == INST_TYPE_RD_R1_IMM)
+                       print_func (stream, "\t%s, %s, %s", get_field_rd (inst),
+                         get_field_r1(inst), get_field_imm (inst));
+               else
+                       print_func (stream, "\t%s, %s, %s", get_field_cond (inst),
+                         get_field_r1(inst), get_field_imm (inst));
+
          if (info->print_address_func && get_int_field_r1 (inst) == 0
              && info->symbol_at_address_func)
            {