X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=opcodes%2Ffr30-desc.c;h=18963b9f1687bf0b92eb5324289574d6a7873f01;hb=707960fed520b85843c8ba36f3a0c6aadf92cffc;hp=0eb67557aa7693c1250a0c9ba7de36970939f88b;hpb=3882b010780ca1aa1ed5d7b38e936cd2d6d5486b;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/fr30-desc.c b/opcodes/fr30-desc.c index 0eb67557aa..18963b9f16 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. @@ -346,6 +346,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, &(fr30_cgen_ifld_table[23]) }, + { 0, &(fr30_cgen_ifld_table[24]) }, + {0,0} +}; + /* The operand table. */ #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) @@ -363,150 +378,199 @@ const CGEN_OPERAND fr30_cgen_operand_table[] = { /* pc: program counter */ { "pc", FR30_OPERAND_PC, HW_H_PC, 0, 0, + { 0, &(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) @@ -1501,8 +1574,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) @@ -1674,10 +1747,43 @@ void fr30_cgen_cpu_close (cd) CGEN_CPU_DESC cd; { + unsigned int i; + 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); }