OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [gas/] [cgen.h] - Diff between revs 147 and 163

Only display areas with differences | Details | Blame | View Log

Rev 147 Rev 163
/* GAS cgen support.
/* GAS cgen support.
   Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007
   Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2011
   Free Software Foundation, Inc.
   Free Software Foundation, Inc.
 
 
   This file is part of GAS, the GNU Assembler.
   This file is part of GAS, the GNU Assembler.
 
 
   GAS is free software; you can redistribute it and/or modify
   GAS is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3, or (at your option)
   the Free Software Foundation; either version 3, or (at your option)
   any later version.
   any later version.
 
 
   GAS is distributed in the hope that it will be useful, but WITHOUT
   GAS is distributed in the hope that it will be useful, but WITHOUT
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
   License for more details.
   License for more details.
 
 
   You should have received a copy of the GNU General Public License
   You should have received a copy of the GNU General Public License
   along with GAS; see the file COPYING.  If not, write to the Free
   along with GAS; see the file COPYING.  If not, write to the Free
   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
   02110-1301, USA.  */
   02110-1301, USA.  */
 
 
#ifndef GAS_CGEN_H
#ifndef GAS_CGEN_H
#define GAS_CGEN_H
#define GAS_CGEN_H
 
 
/* Opcode table handle.  */
/* Opcode table handle.  */
extern CGEN_CPU_DESC gas_cgen_cpu_desc;
extern CGEN_CPU_DESC gas_cgen_cpu_desc;
 
 
/* Maximum number of fixups in an insn.
/* Maximum number of fixups in an insn.
   If you need to change this, allow target to override and do so there.  */
   If you need to change this, allow target to override and do so there.  */
#ifndef GAS_CGEN_MAX_FIXUPS
#ifndef GAS_CGEN_MAX_FIXUPS
#define GAS_CGEN_MAX_FIXUPS 3
#define GAS_CGEN_MAX_FIXUPS 3
#endif
#endif
 
 
/* Struct defining result of gas_cgen_finish_insn.  */
/* Struct defining result of gas_cgen_finish_insn.  */
typedef struct {
typedef struct
  /* frag containing the insn */
{
 
  /* Frag containing the insn */
  fragS * frag;
  fragS * frag;
  /* Address of insn in frag.  */
  /* Address of insn in frag.  */
  char * addr;
  char * addr;
  /* Number of fixups this insn has.  */
  /* Number of fixups this insn has.  */
  int num_fixups;
  int num_fixups;
  /* Array of fixups.  */
  /* Array of fixups.  */
  fixS * fixups[GAS_CGEN_MAX_FIXUPS];
  fixS * fixups[GAS_CGEN_MAX_FIXUPS];
} finished_insnS;
} finished_insnS;
 
 
/* Callback for operand parsing.
/* Callback for operand parsing.
   The result is an error message or NULL for success.
   The result is an error message or NULL for success.
   The parsed value is stored in the bfd_vma *.  */
   The parsed value is stored in the bfd_vma *.  */
extern const char * gas_cgen_parse_operand
extern const char * gas_cgen_parse_operand
     (CGEN_CPU_DESC, enum cgen_parse_operand_type,
     (CGEN_CPU_DESC, enum cgen_parse_operand_type,
      const char **, int, int, enum cgen_parse_operand_result *,
      const char **, int, int, enum cgen_parse_operand_result *,
      bfd_vma *);
      bfd_vma *);
 
 
/* Call this from md_assemble to initialize the assembler callback.  */
/* Call this from md_assemble to initialize the assembler callback.  */
extern void gas_cgen_init_parse (void);
extern void gas_cgen_init_parse (void);
 
 
/* Routines and macros for saving fixup chains.  */
/* Routines and macros for saving fixup chains.  */
extern void gas_cgen_save_fixups (int);
extern void gas_cgen_save_fixups (int);
extern void gas_cgen_restore_fixups (int);
extern void gas_cgen_restore_fixups (int);
extern void gas_cgen_swap_fixups (int);
extern void gas_cgen_swap_fixups (int);
extern void gas_cgen_initialize_saved_fixups_array (void);
extern void gas_cgen_initialize_saved_fixups_array (void);
#define MAX_SAVED_FIXUP_CHAINS 50
#define MAX_SAVED_FIXUP_CHAINS 50
 
 
/* Add a register to the assembler's hash table.
/* Add a register to the assembler's hash table.
   This makes lets GAS parse registers for us.
   This makes lets GAS parse registers for us.
   ??? This isn't currently used, but it could be in the future.  */
   ??? This isn't currently used, but it could be in the future.  */
extern void cgen_asm_record_register (char *, int);
extern void cgen_asm_record_register (char *, int);
 
 
/* After CGEN_SYM (assemble_insn) is done, this is called to
/* After CGEN_SYM (assemble_insn) is done, this is called to
   output the insn and record any fixups.  */
   output the insn and record any fixups.  */
extern void gas_cgen_finish_insn (const CGEN_INSN *,
extern void gas_cgen_finish_insn (const CGEN_INSN *,
                                  CGEN_INSN_BYTES_PTR, unsigned int,
                                  CGEN_INSN_BYTES_PTR, unsigned int,
                                  int, finished_insnS *);
                                  int, finished_insnS *);
 
 
/* Record a fixup.  */
/* Record a fixup.  */
extern fixS * gas_cgen_record_fixup (fragS *, int, const CGEN_INSN *,
extern fixS * gas_cgen_record_fixup (fragS *, int, const CGEN_INSN *,
                                     int, const CGEN_OPERAND *, int,
                                     int, const CGEN_OPERAND *, int,
                                     symbolS *, offsetT);
                                     symbolS *, offsetT);
extern fixS * gas_cgen_record_fixup_exp (fragS *, int, const CGEN_INSN *,
extern fixS * gas_cgen_record_fixup_exp (fragS *, int, const CGEN_INSN *,
                                         int, const CGEN_OPERAND *, int,
                                         int, const CGEN_OPERAND *, int,
                                         expressionS *);
                                         expressionS *);
 
 
/* md_apply_fix handler */
extern bfd_reloc_code_real_type gas_cgen_pcrel_r_type (bfd_reloc_code_real_type);
 
 
 
/* md_apply_fix handler.  */
extern void gas_cgen_md_apply_fix (fixS *, valueT *, segT);
extern void gas_cgen_md_apply_fix (fixS *, valueT *, segT);
 
 
/* tc_gen_reloc handler */
/* tc_gen_reloc handler.  */
extern arelent *gas_cgen_tc_gen_reloc (asection *, fixS *);
extern arelent *gas_cgen_tc_gen_reloc (asection *, fixS *);
 
 
/* Target supplied routine to lookup a reloc.  */
/* Target supplied routine to lookup a reloc.  */
extern bfd_reloc_code_real_type
extern bfd_reloc_code_real_type
md_cgen_lookup_reloc (const CGEN_INSN *, const CGEN_OPERAND *, fixS *);
md_cgen_lookup_reloc (const CGEN_INSN *, const CGEN_OPERAND *, fixS *);
 
 
/* Optional target supplied routine to record a fixup for an expression.  */
/* Optional target supplied routine to record a fixup for an expression.  */
extern fixS *
extern fixS *
md_cgen_record_fixup_exp (fragS *, int, const CGEN_INSN *, int,
md_cgen_record_fixup_exp (fragS *, int, const CGEN_INSN *, int,
                          const CGEN_OPERAND *, int, expressionS *);
                          const CGEN_OPERAND *, int, expressionS *);
 
 
extern void gas_cgen_md_operand (expressionS *);
extern void gas_cgen_md_operand (expressionS *);
 
 
/* Perform any cgen specific initialisation for gas.  */
/* Perform any cgen specific initialisation for gas.  */
extern void gas_cgen_begin (void);
extern void gas_cgen_begin (void);
 
 
#endif /* GAS_CGEN_H */
#endif /* GAS_CGEN_H */
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.