X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Fconfig%2Fxtensa-istack.h;h=3d08efb0d8427376bae320c232a6fac83b911896;hb=6eb7d83039db70127a6eb3e4b64ecae782c42f00;hp=d9697e116bfc86585080facd2221956ce2aea8ad;hpb=4b4da1607aeed19ac399963a3aa12b0417e477ae;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/config/xtensa-istack.h b/gas/config/xtensa-istack.h index d9697e116b..3d08efb0d8 100644 --- a/gas/config/xtensa-istack.h +++ b/gas/config/xtensa-istack.h @@ -1,11 +1,11 @@ /* Declarations for stacks of tokenized Xtensa instructions. - Copyright (C) 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 2003-2016 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. GAS is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + the Free Software Foundation; either version 3, or (at your option) any later version. GAS is distributed in the hope that it will be useful, @@ -21,11 +21,10 @@ #ifndef XTENSA_ISTACK_H #define XTENSA_ISTACK_H -#include "dwarf2dbg.h" #include "xtensa-isa.h" #define MAX_ISTACK 12 -#define MAX_INSN_ARGS 10 +#define MAX_INSN_ARGS 64 enum itype_enum { @@ -43,21 +42,28 @@ typedef struct tinsn_struct enum itype_enum insn_type; xtensa_opcode opcode; /* Literals have an invalid opcode. */ - bfd_boolean is_specific_opcode; - bfd_boolean keep_wide; + bfd_boolean is_specific_opcode; + bfd_boolean keep_wide; int ntok; expressionS tok[MAX_INSN_ARGS]; - struct dwarf2_line_info loc; + bfd_boolean loc_directive_seen; + struct dwarf2_line_info debug_line; - struct fixP *fixup; + /* This field is used for two types of special pseudo ops: + 1. TLS-related operations. Eg: callx8.tls + 2. j.l label, a2 + + For the tls-related operations, it will hold a tls-related opcode + and info to be used in a fixup. For j.l it will hold a + register to be used during relaxation. */ + expressionS extra_arg; /* 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; @@ -77,12 +83,11 @@ bfd_boolean istack_empty (IStack *); bfd_boolean istack_full (IStack *); TInsn *istack_top (IStack *); void istack_push (IStack *, TInsn *); -TInsn *istack_push_space (IStack *); +TInsn *istack_push_space (IStack *); void istack_pop (IStack *); /* TInsn utilities. */ void tinsn_init (TInsn *); -expressionS *tinsn_get_tok (TInsn *, int); /* vliw_insn: bundles of TInsns. */ @@ -90,10 +95,10 @@ expressionS *tinsn_get_tok (TInsn *, int); typedef struct vliw_insn { xtensa_format format; - xtensa_insnbuf insnbuf; int num_slots; unsigned int inside_bundle; TInsn slots[MAX_SLOTS]; + xtensa_insnbuf insnbuf; xtensa_insnbuf slotbuf[MAX_SLOTS]; } vliw_insn;