Add support to GDB for the Renesas rl78 architecture.
[external/binutils.git] / opcodes / tic54x-dis.c
index c531b0b..578af10 100644 (file)
@@ -1,21 +1,23 @@
 /* Disassembly routines for TMS320C54X architecture
-   Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
+   Copyright 1999, 2000, 2001, 2005, 2007, 2009 Free Software Foundation, Inc.
    Contributed by Timothy Wall (twall@cygnus.com)
 
-   This program is free software; you can redistribute it and/or modify
+   This file is part of the GNU opcodes library.
+
+   This library is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
 
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   It is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA.  */
+   along with this file; see the file COPYING.  If not, write to the
+   Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
 
 #include <errno.h>
 #include <math.h>
 #include "opcode/tic54x.h"
 #include "coff/tic54x.h"
 
-static int has_lkaddr (unsigned short, const template *);
-static int get_insn_size (unsigned short, const template *);
+static int has_lkaddr (unsigned short, const insn_template *);
+static int get_insn_size (unsigned short, const insn_template *);
 static int print_instruction (disassemble_info *, bfd_vma,
                               unsigned short, const char *,
                               const enum optype [], int, int);
 static int print_parallel_instruction (disassemble_info *, bfd_vma,
-                                       unsigned short, 
-                                       const template *, int);
+                                       unsigned short,
+                                       const insn_template *, int);
 static int sprint_dual_address (disassemble_info *,char [],
                                 unsigned short);
 static int sprint_indirect_address (disassemble_info *,char [],
@@ -49,7 +51,7 @@ print_insn_tic54x (bfd_vma memaddr, disassemble_info *info)
   bfd_byte opbuf[2];
   unsigned short opcode;
   int status, size;
-  const template* tm;
+  const insn_template* tm;
 
   status = (*info->read_memory_func) (memaddr, opbuf, 2, info);
   if (status != 0)
@@ -84,7 +86,7 @@ print_insn_tic54x (bfd_vma memaddr, disassemble_info *info)
 }
 
 static int
-has_lkaddr (unsigned short memdata, const template *tm)
+has_lkaddr (unsigned short memdata, const insn_template *tm)
 {
   return (IS_LKADDR (memdata)
          && (OPTYPE (tm->operand_types[0]) == OP_Smem
@@ -97,11 +99,11 @@ has_lkaddr (unsigned short memdata, const template *tm)
 
 /* always returns 1 (whether an insn template was found) since we provide an
    "unknown instruction" template */
-const template*
-tic54x_get_insn (disassemble_info *info, bfd_vma addr, 
+const insn_template*
+tic54x_get_insn (disassemble_info *info, bfd_vma addr,
                  unsigned short memdata, int *size)
 {
-  const template *tm = NULL;
+  const insn_template *tm = NULL;
 
   for (tm = tic54x_optab; tm->name; tm++)
   {
@@ -133,7 +135,7 @@ tic54x_get_insn (disassemble_info *info, bfd_vma addr,
         }
     }
   }
-  for (tm = (template *) tic54x_paroptab; tm->name; tm++)
+  for (tm = (insn_template *) tic54x_paroptab; tm->name; tm++)
   {
     if (tm->opcode == (memdata & tm->mask))
     {
@@ -147,7 +149,7 @@ tic54x_get_insn (disassemble_info *info, bfd_vma addr,
 }
 
 static int
-get_insn_size (unsigned short memdata, const template *insn)
+get_insn_size (unsigned short memdata, const insn_template *insn)
 {
   int size;
 
@@ -378,7 +380,10 @@ print_instruction (info, memaddr, opcode, tm_name, tm_operands, size, ext)
         case OP_CC3:
         {
           const char *code[] = { "eq", "lt", "gt", "neq" };
-          sprintf (operand[i], code[CC3 (opcode)]);
+
+         /* Do not use sprintf with only two parameters as a
+            compiler warning could be generated in such conditions.  */
+         sprintf (operand[i], "%s", code[CC3 (opcode)]);
           info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
           break;
         }
@@ -467,7 +472,7 @@ print_parallel_instruction (info, memaddr, opcode, ptm, size)
   disassemble_info *info;
   bfd_vma memaddr;
   unsigned short opcode;
-  const template *ptm;
+  const insn_template *ptm;
   int size;
 {
   print_instruction (info, memaddr, opcode,