X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=opcodes%2Ffr30-desc.c;h=a404f9ba40e8a7209227e11080c260c22aa2c2f7;hb=98f70fc4f028bc7399345947077e733e1feddb55;hp=b2a205fae58cc84a06d6dcbbbfad52923a8a79ea;hpb=fc7bc88384beca1d62919c19120cc0e70c0d1e4e;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/fr30-desc.c b/opcodes/fr30-desc.c index b2a205fae5..a404f9ba40 100644 --- a/opcodes/fr30-desc.c +++ b/opcodes/fr30-desc.c @@ -2,7 +2,7 @@ THIS FILE IS MACHINE GENERATED WITH CGEN. -Copyright 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU Binutils and/or GDB, the GNU debugger. @@ -23,7 +23,6 @@ with this program; if not, write to the Free Software Foundation, Inc., */ #include "sysdep.h" -#include #include #include #include "ansidecl.h" @@ -33,6 +32,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "fr30-opc.h" #include "opintl.h" #include "libiberty.h" +#include "xregex.h" /* Attributes. */ @@ -347,6 +347,21 @@ const CGEN_IFLD fr30_cgen_ifld_table[] = #undef A + +/* multi ifield declarations */ + +const CGEN_MAYBE_MULTI_IFLD FR30_F_I20_MULTI_IFIELD []; + + +/* multi ifield definitions */ + +const CGEN_MAYBE_MULTI_IFLD FR30_F_I20_MULTI_IFIELD [] = +{ + { 0, { (const PTR) &fr30_cgen_ifld_table[23] } }, + { 0, { (const PTR) &fr30_cgen_ifld_table[24] } }, + { 0, { (const PTR) 0 } } +}; + /* The operand table. */ #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) @@ -364,152 +379,204 @@ const CGEN_OPERAND fr30_cgen_operand_table[] = { /* pc: program counter */ { "pc", FR30_OPERAND_PC, HW_H_PC, 0, 0, + { 0, { (const PTR) &fr30_cgen_ifld_table[0] } }, { 0|A(SEM_ONLY), { (1<default_insn_bitsize == UNSET) cd->default_insn_bitsize = isa->default_insn_bitsize; else if (isa->default_insn_bitsize == cd->default_insn_bitsize) @@ -1502,8 +1578,8 @@ fr30_cgen_rebuild_tables (cd) else cd->default_insn_bitsize = CGEN_SIZE_UNKNOWN; - /* Base insn sizes of all selected isas must be equal or we set - the result to 0, meaning "unknown". */ + /* Base insn sizes of all selected isas must be equal + or we set the result to 0, meaning "unknown". */ if (cd->base_insn_bitsize == UNSET) cd->base_insn_bitsize = isa->base_insn_bitsize; else if (isa->base_insn_bitsize == cd->base_insn_bitsize) @@ -1675,10 +1751,43 @@ void fr30_cgen_cpu_close (cd) CGEN_CPU_DESC cd; { + unsigned int i; + const CGEN_INSN *insns; + + if (cd->macro_insn_table.init_entries) + { + insns = cd->macro_insn_table.init_entries; + for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns) + { + if (CGEN_INSN_RX ((insns))) + regfree (CGEN_INSN_RX (insns)); + } + } + + if (cd->insn_table.init_entries) + { + insns = cd->insn_table.init_entries; + for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns) + { + if (CGEN_INSN_RX (insns)) + regfree (CGEN_INSN_RX (insns)); + } + } + + + + if (cd->macro_insn_table.init_entries) + free ((CGEN_INSN *) cd->macro_insn_table.init_entries); + if (cd->insn_table.init_entries) free ((CGEN_INSN *) cd->insn_table.init_entries); + if (cd->hw_table.entries) free ((CGEN_HW_ENTRY *) cd->hw_table.entries); + + if (cd->operand_table.entries) + free ((CGEN_HW_ENTRY *) cd->operand_table.entries); + free (cd); }