The patch fixed invalid compilation of instruction LD IY,(HL) and disassemble of...
[deliverable/binutils-gdb.git] / gas / config / xtensa-istack.h
index a1cca2ea702ba1c7a69bcbab66d3bb707b3d72a5..c12d5609d7141b71a898feccc50051c018b6b01b 100644 (file)
@@ -1,11 +1,11 @@
 /* Declarations for stacks of tokenized Xtensa instructions.
-   Copyright (C) 2003 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,
@@ -15,8 +15,8 @@
 
    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
@@ -24,7 +24,7 @@
 #include "xtensa-isa.h"
 
 #define MAX_ISTACK 12
-#define MAX_INSN_ARGS 6
+#define MAX_INSN_ARGS 64
 
 enum itype_enum
 {
@@ -40,11 +40,32 @@ 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];
+  bfd_boolean loc_directive_seen;
+  struct dwarf2_line_info debug_line;
+
+  /* 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:  */
+  enum xtensa_relax_statesE subtype;
+  int literal_space;
+
+  /* Filled out by vinsn_to_insnbuf:  */
+  symbolS *symbol;
+  offsetT offset;
+  fragS *literal_frag;
 } TInsn;
 
 
@@ -57,17 +78,28 @@ 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 *));
-void         tinsn_copy         PARAMS ((TInsn *, const TInsn *));
-expressionS *tinsn_get_tok      PARAMS ((TInsn *, int));
+void tinsn_init (TInsn *);
+
+
+/* vliw_insn: bundles of TInsns.  */
+
+typedef struct vliw_insn
+{
+  xtensa_format format;
+  int num_slots;
+  unsigned int inside_bundle;
+  TInsn slots[MAX_SLOTS];
+  xtensa_insnbuf insnbuf;
+  xtensa_insnbuf slotbuf[MAX_SLOTS];
+} vliw_insn;
 
 #endif /* !XTENSA_ISTACK_H */
This page took 0.025713 seconds and 4 git commands to generate.