[BACK]Return to arc-dis.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / external / gpl3 / binutils / dist / opcodes

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/external/gpl3/binutils/dist/opcodes/arc-dis.c between version 1.1.1.7 and 1.1.1.8

version 1.1.1.7, 2018/11/06 21:19:06 version 1.1.1.8, 2020/04/03 23:39:42
Line 1 
Line 1 
 /* Instruction printing code for the ARC.  /* Instruction printing code for the ARC.
    Copyright (C) 1994-2018 Free Software Foundation, Inc.     Copyright (C) 1994-2020 Free Software Foundation, Inc.
   
    Contributed by Claudiu Zissulescu (claziss@synopsys.com)     Contributed by Claudiu Zissulescu (claziss@synopsys.com)
   
Line 90  static const char * const regnames[64] =
Line 90  static const char * const regnames[64] =
   "r32", "r33", "r34", "r35", "r36", "r37", "r38", "r39",    "r32", "r33", "r34", "r35", "r36", "r37", "r38", "r39",
   "r40", "r41", "r42", "r43", "r44", "r45", "r46", "r47",    "r40", "r41", "r42", "r43", "r44", "r45", "r46", "r47",
   "r48", "r49", "r50", "r51", "r52", "r53", "r54", "r55",    "r48", "r49", "r50", "r51", "r52", "r53", "r54", "r55",
   "r56", "r57", "ACCL", "ACCH", "lp_count", "rezerved", "LIMM", "pcl"    "r56", "r57", "r58", "r59", "lp_count", "reserved", "LIMM", "pcl"
 };  };
   
 static const char * const addrtypenames[ARC_NUM_ADDRTYPES] =  static const char * const addrtypenames[ARC_NUM_ADDRTYPES] =
Line 137  static bfd_boolean print_hex = FALSE;
Line 137  static bfd_boolean print_hex = FALSE;
   (info->endian == BFD_ENDIAN_LITTLE ? bfd_getm32 (bfd_getl32 (buf))    \    (info->endian == BFD_ENDIAN_LITTLE ? bfd_getm32 (bfd_getl32 (buf))    \
    : bfd_getb32 (buf))     : bfd_getb32 (buf))
   
 #define BITS(word,s,e)  (((word) << (sizeof (word) * 8 - 1 - e)) >>     \  #define BITS(word,s,e)  (((word) >> (s)) & ((1ull << ((e) - (s)) << 1) - 1))
                          (s + (sizeof (word) * 8 - 1 - e)))  
 #define OPCODE_32BIT_INSN(word) (BITS ((word), 27, 31))  #define OPCODE_32BIT_INSN(word) (BITS ((word), 27, 31))
   
 /* Functions implementation.  */  /* Functions implementation.  */
Line 181  skip_this_opcode (const struct arc_opcod
Line 180  skip_this_opcode (const struct arc_opcod
   
   /* Check opcode for major 0x06, return if it is not in.  */    /* Check opcode for major 0x06, return if it is not in.  */
   if (arc_opcode_len (opcode) == 4    if (arc_opcode_len (opcode) == 4
       && OPCODE_32BIT_INSN (opcode->opcode) != 0x06)        && (OPCODE_32BIT_INSN (opcode->opcode) != 0x06
             /* Can be an APEX extensions.  */
             && OPCODE_32BIT_INSN (opcode->opcode) != 0x07))
     return FALSE;      return FALSE;
   
   /* or not a known truble class.  */    /* or not a known truble class.  */
Line 190  skip_this_opcode (const struct arc_opcod
Line 191  skip_this_opcode (const struct arc_opcod
     case FLOAT:      case FLOAT:
     case DSP:      case DSP:
     case ARITH:      case ARITH:
       case MPY:
       break;        break;
     default:      default:
       return FALSE;        return FALSE;
Line 292  find_format_from_table (struct disassemb
Line 294  find_format_from_table (struct disassemb
           if (operand->extract)            if (operand->extract)
             value = (*operand->extract) (insn, &invalid);              value = (*operand->extract) (insn, &invalid);
           else            else
             value = (insn >> operand->shift) & ((1 << operand->bits) - 1);              value = (insn >> operand->shift) & ((1ull << operand->bits) - 1);
   
           /* Check for LIMM indicator.  If it is there, then make sure            /* Check for LIMM indicator.  If it is there, then make sure
              we pick the right format.  */               we pick the right format.  */
Line 669  arc_insn_length (bfd_byte msb, bfd_byte 
Line 671  arc_insn_length (bfd_byte msb, bfd_byte 
       break;        break;
   
     default:      default:
       abort ();        return 0;
     }      }
 }  }
   
Line 764  parse_option (const char *option)
Line 766  parse_option (const char *option)
   else if (disassembler_options_cmp (option, "fpuda") == 0)    else if (disassembler_options_cmp (option, "fpuda") == 0)
     add_to_decodelist (FLOAT, DPA);      add_to_decodelist (FLOAT, DPA);
   
     else if (disassembler_options_cmp (option, "nps400") == 0)
       {
         add_to_decodelist (ACL, NPS400);
         add_to_decodelist (ARITH, NPS400);
         add_to_decodelist (BITOP, NPS400);
         add_to_decodelist (BMU, NPS400);
         add_to_decodelist (CONTROL, NPS400);
         add_to_decodelist (DMA, NPS400);
         add_to_decodelist (DPI, NPS400);
         add_to_decodelist (MEMORY, NPS400);
         add_to_decodelist (MISC, NPS400);
         add_to_decodelist (NET, NPS400);
         add_to_decodelist (PMU, NPS400);
         add_to_decodelist (PROTOCOL_DECODE, NPS400);
         add_to_decodelist (ULTRAIP, NPS400);
       }
   
   else if (disassembler_options_cmp (option, "fpus") == 0)    else if (disassembler_options_cmp (option, "fpus") == 0)
     {      {
       add_to_decodelist (FLOAT, SP);        add_to_decodelist (FLOAT, SP);
Line 989  print_insn_arc (bfd_vma memaddr,
Line 1008  print_insn_arc (bfd_vma memaddr,
      the number of bytes objdump should display on a single line.  If       the number of bytes objdump should display on a single line.  If
      the instruction decoder sets this, it should always set it to       the instruction decoder sets this, it should always set it to
      the same value in order to get reasonable looking output.  */       the same value in order to get reasonable looking output.  */
   
   info->bytes_per_line  = 8;    info->bytes_per_line  = 8;
   
   /* In the next lines, we set two info variables control the way    /* In the next lines, we set two info variables control the way
Line 997  print_insn_arc (bfd_vma memaddr,
Line 1015  print_insn_arc (bfd_vma memaddr,
      8 and bytes_per_chunk is 4, the output will look like this:       8 and bytes_per_chunk is 4, the output will look like this:
      00:   00000000 00000000       00:   00000000 00000000
      with the chunks displayed according to "display_endian".  */       with the chunks displayed according to "display_endian".  */
   
   if (info->section    if (info->section
       && !(info->section->flags & SEC_CODE))        && !(info->section->flags & SEC_CODE))
     {      {
Line 1052  print_insn_arc (bfd_vma memaddr,
Line 1069  print_insn_arc (bfd_vma memaddr,
           (*info->fprintf_func) (info->stream, ".word\t0x%08lx", data);            (*info->fprintf_func) (info->stream, ".word\t0x%08lx", data);
           break;            break;
         default:          default:
           abort ();            return -1;
         }          }
       return size;        return size;
     }      }
   
   insn_len = arc_insn_length (buffer[highbyte], buffer[lowbyte], info);    insn_len = arc_insn_length (buffer[highbyte], buffer[lowbyte], info);
   pr_debug ("instruction length = %d bytes\n", insn_len);    pr_debug ("instruction length = %d bytes\n", insn_len);
     if (insn_len == 0)
       return -1;
   
   arc_infop = info->private_data;    arc_infop = info->private_data;
   arc_infop->insn_len = insn_len;    arc_infop->insn_len = insn_len;
   
Line 1111  print_insn_arc (bfd_vma memaddr,
Line 1131  print_insn_arc (bfd_vma memaddr,
   
     default:      default:
       /* There is no instruction whose length is not 2, 4, 6, or 8.  */        /* There is no instruction whose length is not 2, 4, 6, or 8.  */
       abort ();        return -1;
     }      }
   
   pr_debug ("instruction value = %llx\n", insn);    pr_debug ("instruction value = %llx\n", insn);
Line 1139  print_insn_arc (bfd_vma memaddr,
Line 1159  print_insn_arc (bfd_vma memaddr,
           (*info->fprintf_func) (info->stream, ".shor\t%#04llx",            (*info->fprintf_func) (info->stream, ".shor\t%#04llx",
                                  insn & 0xffff);                                   insn & 0xffff);
           break;            break;
   
         case 4:          case 4:
           (*info->fprintf_func) (info->stream, ".word\t%#08llx",            (*info->fprintf_func) (info->stream, ".word\t%#08llx",
                                  insn & 0xffffffff);                                   insn & 0xffffffff);
           break;            break;
   
         case 6:          case 6:
           (*info->fprintf_func) (info->stream, ".long\t%#08llx",            (*info->fprintf_func) (info->stream, ".long\t%#08llx",
                                  insn & 0xffffffff);                                   insn & 0xffffffff);
           (*info->fprintf_func) (info->stream, ".long\t%#04llx",            (*info->fprintf_func) (info->stream, ".long\t%#04llx",
                                  (insn >> 32) & 0xffff);                                   (insn >> 32) & 0xffff);
           break;            break;
   
         case 8:          case 8:
           (*info->fprintf_func) (info->stream, ".long\t%#08llx",            (*info->fprintf_func) (info->stream, ".long\t%#08llx",
                                  insn & 0xffffffff);                                   insn & 0xffffffff);
           (*info->fprintf_func) (info->stream, ".long\t%#08llx",            (*info->fprintf_func) (info->stream, ".long\t%#08llx",
                                  insn >> 32);                                   insn >> 32);
           break;            break;
   
         default:          default:
           abort ();            return -1;
         }          }
   
       info->insn_type = dis_noninsn;        info->insn_type = dis_noninsn;
Line 1411  with -M switch (multiple options should 
Line 1435  with -M switch (multiple options should 
   fprintf (stream, _("\    fprintf (stream, _("\
   fpud            Recognize double precision FPU instructions.\n"));    fpud            Recognize double precision FPU instructions.\n"));
   fprintf (stream, _("\    fprintf (stream, _("\
     nps400          Recognize NPS400 instructions.\n"));
     fprintf (stream, _("\
   hex             Use only hexadecimal number to print immediates.\n"));    hex             Use only hexadecimal number to print immediates.\n"));
 }  }
   

Legend:
Removed from v.1.1.1.7  
changed lines
  Added in v.1.1.1.8

CVSweb <webmaster@jp.NetBSD.org>