Ignore:
Timestamp:
Aug 16, 2003, 6:59:22 PM (22 years ago)
Author:
bird
Message:

binutils v2.14 - offical sources.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/GNU/src/binutils/opcodes/m32r-desc.c

    • Property cvs2svn:cvs-rev changed from 1.1 to 1.1.1.2
    r608 r609  
    33THIS FILE IS MACHINE GENERATED WITH CGEN.
    44
    5 Copyright 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
     5Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
    66
    77This file is part of the GNU Binutils and/or GDB, the GNU debugger.
     
    2424
    2525#include "sysdep.h"
    26 #include <ctype.h>
    2726#include <stdio.h>
    2827#include <stdarg.h>
     
    3433#include "opintl.h"
    3534#include "libiberty.h"
     35#include "xregex.h"
    3636
    3737/* Attributes.  */
     
    137137
    138138static const CGEN_MACH m32r_cgen_mach_table[] = {
    139   { "m32r", "m32r", MACH_M32R },
    140   { "m32rx", "m32rx", MACH_M32RX },
    141   { 0, 0, 0 }
     139  { "m32r", "m32r", MACH_M32R, 0 },
     140  { "m32rx", "m32rx", MACH_M32RX, 0 },
     141  { 0, 0, 0, 0 }
    142142};
    143143
     
    169169  & m32r_cgen_opval_gr_names_entries[0],
    170170  19,
    171   0, 0, 0, 0
     171  0, 0, 0, 0, ""
    172172};
    173173
     
    203203  & m32r_cgen_opval_cr_names_entries[0],
    204204  23,
    205   0, 0, 0, 0
     205  0, 0, 0, 0, ""
    206206};
    207207
     
    216216  & m32r_cgen_opval_h_accums_entries[0],
    217217  2,
    218   0, 0, 0, 0
    219 };
    220 
     218  0, 0, 0, 0, ""
     219};
    221220
    222221
    223222/* The hardware table.  */
    224223
    225 #define A(a) (1 << CONCAT2 (CGEN_HW_,a))
     224#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
     225#define A(a) (1 << CGEN_HW_##a)
     226#else
     227#define A(a) (1 << CGEN_HW_/**/a)
     228#endif
    226229
    227230const CGEN_HW_ENTRY m32r_cgen_hw_table[] =
     
    250253#undef A
    251254
     255
    252256/* The instruction field table.  */
    253257
    254 #define A(a) (1 << CONCAT2 (CGEN_IFLD_,a))
     258#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
     259#define A(a) (1 << CGEN_IFLD_##a)
     260#else
     261#define A(a) (1 << CGEN_IFLD_/**/a)
     262#endif
    255263
    256264const CGEN_IFLD m32r_cgen_ifld_table[] =
     
    287295#undef A
    288296
     297
     298
     299/* multi ifield declarations */
     300
     301
     302
     303/* multi ifield definitions */
     304
     305
    289306/* The operand table.  */
    290307
    291 #define A(a) (1 << CONCAT2 (CGEN_OPERAND_,a))
    292 #define OPERAND(op) CONCAT2 (M32R_OPERAND_,op)
     308#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
     309#define A(a) (1 << CGEN_OPERAND_##a)
     310#else
     311#define A(a) (1 << CGEN_OPERAND_/**/a)
     312#endif
     313#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
     314#define OPERAND(op) M32R_OPERAND_##op
     315#else
     316#define OPERAND(op) M32R_OPERAND_/**/op
     317#endif
    293318
    294319const CGEN_OPERAND m32r_cgen_operand_table[] =
     
    296321/* pc: program counter */
    297322  { "pc", M32R_OPERAND_PC, HW_H_PC, 0, 0,
     323    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_NIL] } },
    298324    { 0|A(SEM_ONLY), { (1<<MACH_BASE) } }  },
    299325/* sr: source register */
    300326  { "sr", M32R_OPERAND_SR, HW_H_GR, 12, 4,
     327    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_R2] } },
    301328    { 0, { (1<<MACH_BASE) } }  },
    302329/* dr: destination register */
    303330  { "dr", M32R_OPERAND_DR, HW_H_GR, 4, 4,
     331    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_R1] } },
    304332    { 0, { (1<<MACH_BASE) } }  },
    305333/* src1: source register 1 */
    306334  { "src1", M32R_OPERAND_SRC1, HW_H_GR, 4, 4,
     335    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_R1] } },
    307336    { 0, { (1<<MACH_BASE) } }  },
    308337/* src2: source register 2 */
    309338  { "src2", M32R_OPERAND_SRC2, HW_H_GR, 12, 4,
     339    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_R2] } },
    310340    { 0, { (1<<MACH_BASE) } }  },
    311341/* scr: source control register */
    312342  { "scr", M32R_OPERAND_SCR, HW_H_CR, 12, 4,
     343    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_R2] } },
    313344    { 0, { (1<<MACH_BASE) } }  },
    314345/* dcr: destination control register */
    315346  { "dcr", M32R_OPERAND_DCR, HW_H_CR, 4, 4,
     347    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_R1] } },
    316348    { 0, { (1<<MACH_BASE) } }  },
    317349/* simm8: 8 bit signed immediate */
    318350  { "simm8", M32R_OPERAND_SIMM8, HW_H_SINT, 8, 8,
     351    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_SIMM8] } },
    319352    { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } }  },
    320353/* simm16: 16 bit signed immediate */
    321354  { "simm16", M32R_OPERAND_SIMM16, HW_H_SINT, 16, 16,
     355    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_SIMM16] } },
    322356    { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } }  },
    323357/* uimm4: 4 bit trap number */
    324358  { "uimm4", M32R_OPERAND_UIMM4, HW_H_UINT, 12, 4,
     359    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_UIMM4] } },
    325360    { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } }  },
    326361/* uimm5: 5 bit shift count */
    327362  { "uimm5", M32R_OPERAND_UIMM5, HW_H_UINT, 11, 5,
     363    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_UIMM5] } },
    328364    { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } }  },
    329365/* uimm16: 16 bit unsigned immediate */
    330366  { "uimm16", M32R_OPERAND_UIMM16, HW_H_UINT, 16, 16,
     367    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_UIMM16] } },
    331368    { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } }  },
    332369/* imm1: 1 bit immediate */
    333370  { "imm1", M32R_OPERAND_IMM1, HW_H_UINT, 15, 1,
     371    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_IMM1] } },
    334372    { 0|A(HASH_PREFIX), { (1<<MACH_M32RX) } }  },
    335373/* accd: accumulator destination register */
    336374  { "accd", M32R_OPERAND_ACCD, HW_H_ACCUMS, 4, 2,
     375    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_ACCD] } },
    337376    { 0, { (1<<MACH_M32RX) } }  },
    338377/* accs: accumulator source register */
    339378  { "accs", M32R_OPERAND_ACCS, HW_H_ACCUMS, 12, 2,
     379    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_ACCS] } },
    340380    { 0, { (1<<MACH_M32RX) } }  },
    341381/* acc: accumulator reg (d) */
    342382  { "acc", M32R_OPERAND_ACC, HW_H_ACCUMS, 8, 1,
     383    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_ACC] } },
    343384    { 0, { (1<<MACH_M32RX) } }  },
    344385/* hash: # prefix */
    345386  { "hash", M32R_OPERAND_HASH, HW_H_SINT, 0, 0,
     387    { 0, { (const PTR) 0 } },
    346388    { 0, { (1<<MACH_BASE) } }  },
    347389/* hi16: high 16 bit immediate, sign optional */
    348390  { "hi16", M32R_OPERAND_HI16, HW_H_HI16, 16, 16,
     391    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_HI16] } },
    349392    { 0|A(SIGN_OPT), { (1<<MACH_BASE) } }  },
    350393/* slo16: 16 bit signed immediate, for low() */
    351394  { "slo16", M32R_OPERAND_SLO16, HW_H_SLO16, 16, 16,
     395    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_SIMM16] } },
    352396    { 0, { (1<<MACH_BASE) } }  },
    353397/* ulo16: 16 bit unsigned immediate, for low() */
    354398  { "ulo16", M32R_OPERAND_ULO16, HW_H_ULO16, 16, 16,
     399    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_UIMM16] } },
    355400    { 0, { (1<<MACH_BASE) } }  },
    356401/* uimm24: 24 bit address */
    357402  { "uimm24", M32R_OPERAND_UIMM24, HW_H_ADDR, 8, 24,
     403    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_UIMM24] } },
    358404    { 0|A(HASH_PREFIX)|A(RELOC)|A(ABS_ADDR), { (1<<MACH_BASE) } }  },
    359405/* disp8: 8 bit displacement */
    360406  { "disp8", M32R_OPERAND_DISP8, HW_H_IADDR, 8, 8,
     407    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_DISP8] } },
    361408    { 0|A(RELAX)|A(RELOC)|A(PCREL_ADDR), { (1<<MACH_BASE) } }  },
    362409/* disp16: 16 bit displacement */
    363410  { "disp16", M32R_OPERAND_DISP16, HW_H_IADDR, 16, 16,
     411    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_DISP16] } },
    364412    { 0|A(RELOC)|A(PCREL_ADDR), { (1<<MACH_BASE) } }  },
    365413/* disp24: 24 bit displacement */
    366414  { "disp24", M32R_OPERAND_DISP24, HW_H_IADDR, 8, 24,
     415    { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_DISP24] } },
    367416    { 0|A(RELAX)|A(RELOC)|A(PCREL_ADDR), { (1<<MACH_BASE) } }  },
    368417/* condbit: condition bit */
    369418  { "condbit", M32R_OPERAND_CONDBIT, HW_H_COND, 0, 0,
     419    { 0, { (const PTR) 0 } },
    370420    { 0|A(SEM_ONLY), { (1<<MACH_BASE) } }  },
    371421/* accum: accumulator */
    372422  { "accum", M32R_OPERAND_ACCUM, HW_H_ACCUM, 0, 0,
     423    { 0, { (const PTR) 0 } },
    373424    { 0|A(SEM_ONLY), { (1<<MACH_BASE) } }  },
    374   { 0, 0, 0, 0, 0, {0, {0}} }
     425/* sentinel */
     426  { 0, 0, 0, 0, 0,
     427    { 0, { (const PTR) 0 } },
     428    { 0, { 0 } } }
    375429};
    376430
    377431#undef A
    378432
    379 #define A(a) (1 << CONCAT2 (CGEN_INSN_,a))
     433
     434/* The instruction table.  */
     435
    380436#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
    381 
    382 /* The instruction table.  */
     437#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
     438#define A(a) (1 << CGEN_INSN_##a)
     439#else
     440#define A(a) (1 << CGEN_INSN_/**/a)
     441#endif
    383442
    384443static const CGEN_IBASE m32r_cgen_insn_table[MAX_INSNS] =
     
    10601119};
    10611120
     1121#undef OP
    10621122#undef A
    1063 #undef MNEM
    1064 #undef OP
    10651123
    10661124/* Initialize anything needed to be done once, before any cpu_open call.  */
     1125static void init_tables PARAMS ((void));
    10671126
    10681127static void
     
    10701129{
    10711130}
     1131
     1132static const CGEN_MACH * lookup_mach_via_bfd_name
     1133  PARAMS ((const CGEN_MACH *, const char *));
     1134static void build_hw_table  PARAMS ((CGEN_CPU_TABLE *));
     1135static void build_ifield_table  PARAMS ((CGEN_CPU_TABLE *));
     1136static void build_operand_table PARAMS ((CGEN_CPU_TABLE *));
     1137static void build_insn_table    PARAMS ((CGEN_CPU_TABLE *));
     1138static void m32r_cgen_rebuild_tables PARAMS ((CGEN_CPU_TABLE *));
    10721139
    10731140/* Subroutine of m32r_cgen_cpu_open to look up a mach via its bfd name.  */
     
    11801247     CGEN_CPU_TABLE *cd;
    11811248{
    1182   int i,n_isas;
     1249  int i;
    11831250  unsigned int isas = cd->isas;
    1184 #if 0
    11851251  unsigned int machs = cd->machs;
    1186 #endif
    11871252
    11881253  cd->int_insn_p = CGEN_INT_INSN_P;
     
    11991264        const CGEN_ISA *isa = & m32r_cgen_isa_table[i];
    12001265
    1201         /* Default insn sizes of all selected isas must be equal or we set
    1202            the result to 0, meaning "unknown".  */
     1266        /* Default insn sizes of all selected isas must be
     1267           equal or we set the result to 0, meaning "unknown".  */
    12031268        if (cd->default_insn_bitsize == UNSET)
    12041269          cd->default_insn_bitsize = isa->default_insn_bitsize;
     
    12081273          cd->default_insn_bitsize = CGEN_SIZE_UNKNOWN;
    12091274
    1210         /* Base insn sizes of all selected isas must be equal or we set
    1211            the result to 0, meaning "unknown".  */
     1275        /* Base insn sizes of all selected isas must be equal
     1276           or we set the result to 0, meaning "unknown".  */
    12121277        if (cd->base_insn_bitsize == UNSET)
    12131278          cd->base_insn_bitsize = isa->base_insn_bitsize;
     
    12221287        if (isa->max_insn_bitsize > cd->max_insn_bitsize)
    12231288          cd->max_insn_bitsize = isa->max_insn_bitsize;
    1224 
    1225         ++n_isas;
    12261289      }
    12271290
    1228 #if 0 /* Does nothing?? */
    12291291  /* Data derived from the mach spec.  */
    12301292  for (i = 0; i < MAX_MACHS; ++i)
     
    12331295        const CGEN_MACH *mach = & m32r_cgen_mach_table[i];
    12341296
    1235         ++n_machs;
     1297        if (mach->insn_chunk_bitsize != 0)
     1298        {
     1299          if (cd->insn_chunk_bitsize != 0 && cd->insn_chunk_bitsize != mach->insn_chunk_bitsize)
     1300            {
     1301              fprintf (stderr, "m32r_cgen_rebuild_tables: conflicting insn-chunk-bitsize values: `%d' vs. `%d'\n",
     1302                       cd->insn_chunk_bitsize, mach->insn_chunk_bitsize);
     1303              abort ();
     1304            }
     1305
     1306          cd->insn_chunk_bitsize = mach->insn_chunk_bitsize;
     1307        }
    12361308      }
    1237 #endif
    12381309
    12391310  /* Determine which hw elements are used by MACH.  */
     
    13041375              lookup_mach_via_bfd_name (m32r_cgen_mach_table, name);
    13051376
    1306             machs |= mach->num << 1;
     1377            machs |= 1 << mach->num;
    13071378            break;
    13081379          }
     
    13751446     CGEN_CPU_DESC cd;
    13761447{
     1448  unsigned int i;
     1449  const CGEN_INSN *insns;
     1450
     1451  if (cd->macro_insn_table.init_entries)
     1452    {
     1453      insns = cd->macro_insn_table.init_entries;
     1454      for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns)
     1455        {
     1456          if (CGEN_INSN_RX ((insns)))
     1457            regfree (CGEN_INSN_RX (insns));
     1458        }
     1459    }
     1460
     1461  if (cd->insn_table.init_entries)
     1462    {
     1463      insns = cd->insn_table.init_entries;
     1464      for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns)
     1465        {
     1466          if (CGEN_INSN_RX (insns))
     1467            regfree (CGEN_INSN_RX (insns));
     1468        }
     1469    }
     1470
     1471 
     1472
     1473  if (cd->macro_insn_table.init_entries)
     1474    free ((CGEN_INSN *) cd->macro_insn_table.init_entries);
     1475
    13771476  if (cd->insn_table.init_entries)
    13781477    free ((CGEN_INSN *) cd->insn_table.init_entries);
     1478
    13791479  if (cd->hw_table.entries)
    13801480    free ((CGEN_HW_ENTRY *) cd->hw_table.entries);
     1481
     1482  if (cd->operand_table.entries)
     1483    free ((CGEN_HW_ENTRY *) cd->operand_table.entries);
     1484
    13811485  free (cd);
    13821486}
Note: See TracChangeset for help on using the changeset viewer.