Merge branch 'master' into merge-job
[deliverable/binutils-gdb.git] / gas / config / xtensa-istack.h
index bb9f989e37418ca6754609c6c4bb66452305ddc9..c12d5609d7141b71a898feccc50051c018b6b01b 100644 (file)
@@ -1,11 +1,11 @@
 /* Declarations for stacks of tokenized Xtensa instructions.
-   Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2003-2020 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,
 
    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
-   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA.  */
+   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
 
 #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;
@@ -72,17 +78,16 @@ 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 (IStack *);
+bfd_boolean istack_empty (IStack *);
+bfd_boolean istack_full (IStack *);
+TInsn *istack_top (IStack *);
+void istack_push (IStack *, TInsn *);
+TInsn *istack_push_space (IStack *);
+void istack_pop (IStack *);
 
 /* TInsn utilities.  */
-void tinsn_init PARAMS ((TInsn *));
-expressionS *tinsn_get_tok PARAMS ((TInsn *, int));
+void tinsn_init (TInsn *);
 
 
 /* vliw_insn: bundles of TInsns.  */
@@ -90,10 +95,10 @@ expressionS *tinsn_get_tok PARAMS ((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;
 
This page took 0.024907 seconds and 4 git commands to generate.