X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=cpu%2Fm32c.opc;h=2796e1c1cffb1bfa3dff4a34baa3947b3621ff4b;hb=70bc38f51381698804566504e25d197e8e731d2d;hp=6b9ef1125e440822a85e2aa29e560b573073d680;hpb=01f0fe5e0450edf168c1f612feb93cf588e4e7ea;p=deliverable%2Fbinutils-gdb.git diff --git a/cpu/m32c.opc b/cpu/m32c.opc index 6b9ef1125e..2796e1c1cf 100644 --- a/cpu/m32c.opc +++ b/cpu/m32c.opc @@ -1,6 +1,6 @@ /* m32c opcode support. -*- C -*- - Copyright 2005 Free Software Foundation, Inc. + Copyright 2005, 2007, 2009, 2010 Free Software Foundation, Inc. Contributed by Red Hat Inc; developed under contract from Renesas @@ -8,7 +8,7 @@ This program 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 + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -18,7 +18,9 @@ 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + /* This file is an addendum to m32c.cpu. Heavy use of C code isn't appropriate in .cpu files, so it resides here. This especially applies @@ -38,8 +40,8 @@ /* -- opc.h */ /* Needed for RTL's 'ext' and 'trunc' operators. */ -#include "cgen-types.h" -#include "cgen-ops.h" +#include "cgen/basic-modes.h" +#include "cgen/basic-ops.h" /* We can't use the default hash size because many bits are used by operands. */ @@ -154,27 +156,26 @@ parse_unsigned8 (CGEN_CPU_DESC cd, const char **strp, int opindex, unsigned long *valuep) { const char *errmsg = 0; - unsigned long value; + unsigned long value = 0; long have_zero = 0; if (strncasecmp (*strp, "%dsp8(", 6) == 0) { enum cgen_parse_operand_result result_type; - bfd_vma value; - const char *errmsg; + bfd_vma val; *strp += 6; errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_8, - & result_type, & value); + & result_type, & val); if (**strp != ')') return _("missing `)'"); (*strp) ++; if (errmsg == NULL && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) - { - return _("%dsp8() takes a symbolic address, not a number"); - } + return _("%dsp8() takes a symbolic address, not a number"); + + value = val; *valuep = value; return errmsg; } @@ -251,26 +252,25 @@ parse_signed8 (CGEN_CPU_DESC cd, const char **strp, int opindex, signed long *valuep) { const char *errmsg = 0; - signed long value; + signed long value = 0; if (strncasecmp (*strp, "%hi8(", 5) == 0) { enum cgen_parse_operand_result result_type; - bfd_vma value; - const char *errmsg; + bfd_vma val; *strp += 5; errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_M32C_HI8, - & result_type, & value); + & result_type, & val); if (**strp != ')') return _("missing `)'"); (*strp) ++; if (errmsg == NULL && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) - { - value >>= 16; - } + val >>= 16; + + value = val; *valuep = value; return errmsg; } @@ -292,27 +292,26 @@ parse_unsigned16 (CGEN_CPU_DESC cd, const char **strp, int opindex, unsigned long *valuep) { const char *errmsg = 0; - unsigned long value; + unsigned long value = 0; long have_zero = 0; if (strncasecmp (*strp, "%dsp16(", 7) == 0) { enum cgen_parse_operand_result result_type; - bfd_vma value; - const char *errmsg; + bfd_vma val; *strp += 7; errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_16, - & result_type, & value); + & result_type, & val); if (**strp != ')') return _("missing `)'"); (*strp) ++; if (errmsg == NULL && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) - { - return _("%dsp16() takes a symbolic address, not a number"); - } + return _("%dsp16() takes a symbolic address, not a number"); + + value = val; *valuep = value; return errmsg; } @@ -352,26 +351,25 @@ parse_signed16 (CGEN_CPU_DESC cd, const char **strp, int opindex, signed long *valuep) { const char *errmsg = 0; - signed long value; + signed long value = 0; if (strncasecmp (*strp, "%lo16(", 6) == 0) { enum cgen_parse_operand_result result_type; - bfd_vma value; - const char *errmsg; + bfd_vma val; *strp += 6; errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_LO16, - & result_type, & value); + & result_type, & val); if (**strp != ')') return _("missing `)'"); (*strp) ++; if (errmsg == NULL && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) - { - value &= 0xffff; - } + val &= 0xffff; + + value = val; *valuep = value; return errmsg; } @@ -379,21 +377,20 @@ parse_signed16 (CGEN_CPU_DESC cd, const char **strp, if (strncasecmp (*strp, "%hi16(", 6) == 0) { enum cgen_parse_operand_result result_type; - bfd_vma value; - const char *errmsg; + bfd_vma val; *strp += 6; errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_HI16, - & result_type, & value); + & result_type, & val); if (**strp != ')') return _("missing `)'"); (*strp) ++; if (errmsg == NULL && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) - { - value >>= 16; - } + val >>= 16; + + value = val; *valuep = value; return errmsg; } @@ -569,7 +566,7 @@ parse_lab_5_3 (CGEN_CPU_DESC cd, if (type_addr) *type_addr = op_res; - if (op_res == CGEN_PARSE_OPERAND_ADDRESS) + if (op_res == CGEN_PARSE_OPERAND_RESULT_QUEUED) { /* This is a hack; the field cannot handle near-zero signed offsets that CGEN wants to put in to indicate an "empty" @@ -1119,7 +1116,7 @@ print_regset (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, }; disassemble_info *info = dis_info; int mask; - int index = 0; + int reg_index = 0; char* comma = ""; if (push) @@ -1133,7 +1130,7 @@ print_regset (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, comma = ","; } - for (index = 1; index <= 7; ++index) + for (reg_index = 1; reg_index <= 7; ++reg_index) { if (push) mask >>= 1; @@ -1143,7 +1140,7 @@ print_regset (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, if (value & mask) { (*info->fprintf_func) (info->stream, "%s%s", comma, - m16c_register_names [index]); + m16c_register_names [reg_index]); comma = ","; } }