diff options
Diffstat (limited to 'gas/config/xtensa-istack.h')
-rw-r--r-- | gas/config/xtensa-istack.h | 55 |
1 files changed, 41 insertions, 14 deletions
diff --git a/gas/config/xtensa-istack.h b/gas/config/xtensa-istack.h index a1cca2e..bb9f989 100644 --- a/gas/config/xtensa-istack.h +++ b/gas/config/xtensa-istack.h @@ -1,5 +1,5 @@ /* Declarations for stacks of tokenized Xtensa instructions. - Copyright (C) 2003 Free Software Foundation, Inc. + Copyright (C) 2003, 2004 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -21,10 +21,11 @@ #ifndef XTENSA_ISTACK_H #define XTENSA_ISTACK_H +#include "dwarf2dbg.h" #include "xtensa-isa.h" #define MAX_ISTACK 12 -#define MAX_INSN_ARGS 6 +#define MAX_INSN_ARGS 10 enum itype_enum { @@ -40,11 +41,25 @@ enum itype_enum typedef struct tinsn_struct { enum itype_enum insn_type; - - bfd_boolean is_specific_opcode; + xtensa_opcode opcode; /* Literals have an invalid opcode. */ + bfd_boolean is_specific_opcode; + bfd_boolean keep_wide; int ntok; expressionS tok[MAX_INSN_ARGS]; + struct dwarf2_line_info loc; + + struct fixP *fixup; + + /* Filled out by relaxation_requirements: */ + bfd_boolean record_fix; + enum xtensa_relax_statesE subtype; + int literal_space; + /* Filled out by vinsn_to_insnbuf: */ + symbolS *symbol; + symbolS *sub_symbol; + offsetT offset; + fragS *literal_frag; } TInsn; @@ -57,17 +72,29 @@ typedef struct tinsn_stack } IStack; -void istack_init PARAMS ((IStack *)); -bfd_boolean istack_empty PARAMS ((IStack *)); -bfd_boolean istack_full PARAMS ((IStack *)); -TInsn * istack_top PARAMS ((IStack *)); -void istack_push PARAMS ((IStack *, TInsn *)); -TInsn * istack_push_space PARAMS ((IStack *)); -void istack_pop PARAMS ((IStack *)); +void istack_init PARAMS ((IStack *)); +bfd_boolean istack_empty PARAMS ((IStack *)); +bfd_boolean istack_full PARAMS ((IStack *)); +TInsn *istack_top PARAMS ((IStack *)); +void istack_push PARAMS ((IStack *, TInsn *)); +TInsn *istack_push_space PARAMS ((IStack *)); +void istack_pop PARAMS ((IStack *)); /* TInsn utilities. */ -void tinsn_init PARAMS ((TInsn *)); -void tinsn_copy PARAMS ((TInsn *, const TInsn *)); -expressionS *tinsn_get_tok PARAMS ((TInsn *, int)); +void tinsn_init PARAMS ((TInsn *)); +expressionS *tinsn_get_tok PARAMS ((TInsn *, int)); + + +/* vliw_insn: bundles of TInsns. */ + +typedef struct vliw_insn +{ + xtensa_format format; + xtensa_insnbuf insnbuf; + int num_slots; + unsigned int inside_bundle; + TInsn slots[MAX_SLOTS]; + xtensa_insnbuf slotbuf[MAX_SLOTS]; +} vliw_insn; #endif /* !XTENSA_ISTACK_H */ |