2009-04-05 Kai Tietz <kai.tietz@onevision.com>
[binutils-gdb.git] / gas / config / xtensa-relax.h
index 2a228bce321c2fafe81e27ef4848d621edef5d23..f7fb574c7ed0ed1e9b46d7301c4392eaa60f7d53 100644 (file)
@@ -1,11 +1,11 @@
 /* Table of relaxations for Xtensa assembly.
-   Copyright 2003, 2004 Free Software Foundation, Inc.
+   Copyright 2003, 2004, 2007, 2008 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.  */
+   the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
 
 #ifndef XTENSA_RELAX_H
 #define XTENSA_RELAX_H
@@ -105,6 +105,7 @@ enum op_type
   OP_OPERAND_LOW16U,           /* Low 16 bits of immed.  */
   OP_OPERAND_HI16U,            /* High 16 bits of immed.  */
   OP_LITERAL,
+  OP_FREEREG,
   OP_LABEL
 };
 
@@ -135,10 +136,9 @@ struct build_op
                                   OPERAND: op_data is the field in the
                                   source instruction to take the value from
                                   and encode in the op_num field here.
-                                  LITERAL or LABEL: op_data is the ordinal
-                                  that identifies the appropriate one, i.e.,
-                                  there can be more than one literal or
-                                  label in an expansion.  */
+                                  LITERAL: op_data is field in the source
+                                  instruction that is stored in the literal.
+                                  LABEL: unused.  */
   BuildOp *next;
 };
 
@@ -155,8 +155,6 @@ enum instr_type
 struct build_instr
 {
   InstrType typ;
-  unsigned id;                 /* LITERAL_DEF or LABEL_DEF: an ordinal to
-                                  identify which one.  */
   xtensa_opcode opcode;                /* Unused for LITERAL_DEF or LABEL_DEF.  */
   BuildOp *ops;
   BuildInstr *next;
@@ -173,10 +171,19 @@ struct transition_rule
 typedef int (*transition_cmp_fn) (const TransitionRule *,
                                  const TransitionRule *);
 
-extern TransitionTable *xg_build_simplify_table PARAMS ((transition_cmp_fn));
-extern TransitionTable *xg_build_widen_table PARAMS ((transition_cmp_fn));
+extern TransitionTable *xg_build_simplify_table (transition_cmp_fn);
+extern TransitionTable *xg_build_widen_table (transition_cmp_fn);
 
-extern bfd_boolean xg_has_userdef_op_fn PARAMS ((OpType));
-extern long xg_apply_userdef_op_fn PARAMS ((OpType, long));
+extern bfd_boolean xg_has_userdef_op_fn (OpType);
+extern long xg_apply_userdef_op_fn (OpType, long);
+
+enum flix_level
+{
+  FLIX_ALL,
+  FLIX_NO_GENERATE,
+  FLIX_NONE
+};
+
+extern enum flix_level produce_flix;
 
 #endif /* !XTENSA_RELAX_H */