OSDN Git Service

* configure.ac: Add HAVE_AS_TLS check for Xtensa.
[pf3gnuchains/gcc-fork.git] / gcc / config / xtensa / xtensa-protos.h
index b248da9..0447fae 100644 (file)
@@ -1,12 +1,13 @@
 /* Prototypes of target machine for GNU compiler for Xtensa.
-   Copyright 2001,2002,2003 Free Software Foundation, Inc.
+   Copyright 2001, 2002, 2003, 2004, 2005, 2007, 2008
+   Free Software Foundation, Inc.
    Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
 
 This file is part of GCC.
 
 GCC 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) any later
+Software Foundation; either version 3, or (at your option) any later
 version.
 
 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,104 +16,79 @@ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 for more details.
 
 You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING.  If not, write to the Free
-Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA.  */
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
 
 #ifndef __XTENSA_PROTOS_H__
 #define __XTENSA_PROTOS_H__
 
-/* Functions to test whether an immediate fits in a given field. */
-extern int xtensa_simm7 PARAMS ((int));
-extern int xtensa_simm8 PARAMS ((int));
-extern int xtensa_simm8x256 PARAMS ((int));
-extern int xtensa_simm12b PARAMS ((int));
-extern int xtensa_uimm8 PARAMS ((int));
-extern int xtensa_uimm8x2 PARAMS ((int));
-extern int xtensa_uimm8x4 PARAMS ((int));
-extern int xtensa_ai4const PARAMS ((int));
-extern int xtensa_lsi4x4 PARAMS ((int));
-extern int xtensa_b4const PARAMS ((int));
-extern int xtensa_b4constu PARAMS ((int));
-extern int xtensa_tp7 PARAMS ((int));
+/* Functions to test whether an immediate fits in a given field.  */
+extern bool xtensa_simm8 (HOST_WIDE_INT);
+extern bool xtensa_simm8x256 (HOST_WIDE_INT);
+extern bool xtensa_simm12b (HOST_WIDE_INT);
+extern bool xtensa_b4const_or_zero (HOST_WIDE_INT);
+extern bool xtensa_b4constu (HOST_WIDE_INT);
+extern bool xtensa_mask_immediate (HOST_WIDE_INT);
+extern bool xtensa_mem_offset (unsigned, enum machine_mode);
 
 /* Functions within xtensa.c that we reference.  */
 #ifdef RTX_CODE
-extern int xt_true_regnum PARAMS ((rtx));
-extern int add_operand PARAMS ((rtx, enum machine_mode));
-extern int arith_operand PARAMS ((rtx, enum machine_mode));
-extern int nonimmed_operand PARAMS ((rtx, enum machine_mode));
-extern int mem_operand PARAMS ((rtx, enum machine_mode));
-extern int xtensa_valid_move PARAMS ((enum machine_mode, rtx *operands));
-extern int mask_operand PARAMS ((rtx, enum machine_mode));
-extern int extui_fldsz_operand PARAMS ((rtx, enum machine_mode));
-extern int sext_operand PARAMS ((rtx, enum machine_mode));
-extern int sext_fldsz_operand PARAMS ((rtx, enum machine_mode));
-extern int lsbitnum_operand PARAMS ((rtx, enum machine_mode));
-extern int branch_operand PARAMS ((rtx, enum machine_mode));
-extern int ubranch_operand PARAMS ((rtx, enum machine_mode));
-extern int call_insn_operand PARAMS ((rtx, enum machine_mode));
-extern int move_operand PARAMS ((rtx, enum machine_mode));
-extern int smalloffset_mem_p PARAMS ((rtx));
-extern int smalloffset_double_mem_p PARAMS ((rtx));
-extern int constantpool_address_p PARAMS ((rtx));
-extern int constantpool_mem_p PARAMS ((rtx));
-extern int non_const_move_operand PARAMS ((rtx, enum machine_mode));
-extern int const_float_1_operand PARAMS ((rtx, enum machine_mode));
-extern int fpmem_offset_operand PARAMS ((rtx, enum machine_mode));
-extern void xtensa_extend_reg PARAMS ((rtx, rtx));
-extern void xtensa_load_constant PARAMS ((rtx, rtx));
-extern int branch_operator PARAMS ((rtx, enum machine_mode));
-extern int ubranch_operator PARAMS ((rtx, enum machine_mode));
-extern int boolean_operator PARAMS ((rtx, enum machine_mode));
-extern void xtensa_expand_conditional_branch PARAMS ((rtx *, enum rtx_code));
-extern int xtensa_expand_conditional_move PARAMS ((rtx *, int));
-extern int xtensa_expand_scc PARAMS ((rtx *));
-extern int xtensa_expand_block_move PARAMS ((rtx *));
-extern int xtensa_emit_move_sequence PARAMS ((rtx *, enum machine_mode));
-extern bool xtensa_copy_incoming_a7 PARAMS ((rtx *, enum machine_mode));
-extern void xtensa_emit_block_move PARAMS ((rtx *, rtx *, int));
-extern void xtensa_expand_nonlocal_goto PARAMS ((rtx *));
-extern void xtensa_emit_loop_end PARAMS ((rtx, rtx *));
-extern char * xtensa_emit_call PARAMS ((int, rtx *));
+extern int xt_true_regnum (rtx);
+extern int xtensa_valid_move (enum machine_mode, rtx *);
+extern int smalloffset_mem_p (rtx);
+extern int constantpool_address_p (rtx);
+extern int constantpool_mem_p (rtx);
+extern void xtensa_extend_reg (rtx, rtx);
+extern void xtensa_expand_conditional_branch (rtx *, enum rtx_code);
+extern int xtensa_expand_conditional_move (rtx *, int);
+extern int xtensa_expand_scc (rtx *);
+extern int xtensa_expand_block_move (rtx *);
+extern void xtensa_split_operand_pair (rtx *, enum machine_mode);
+extern int xtensa_emit_move_sequence (rtx *, enum machine_mode);
+extern rtx xtensa_copy_incoming_a7 (rtx);
+extern void xtensa_expand_nonlocal_goto (rtx *);
+extern void xtensa_expand_compare_and_swap (rtx, rtx, rtx, rtx);
+extern void xtensa_expand_atomic (enum rtx_code, rtx, rtx, rtx, bool);
+extern void xtensa_emit_loop_end (rtx, rtx *);
+extern char *xtensa_emit_branch (bool, bool, rtx *);
+extern char *xtensa_emit_bit_branch (bool, bool, rtx *);
+extern char *xtensa_emit_movcc (bool, bool, bool, rtx *);
+extern char *xtensa_emit_call (int, rtx *);
+extern bool xtensa_legitimate_address_p (enum machine_mode, rtx, bool);
+extern rtx xtensa_legitimize_address (rtx, rtx, enum machine_mode);
+extern bool xtensa_tls_referenced_p (rtx);
 
 #ifdef TREE_CODE
-extern void init_cumulative_args PARAMS ((CUMULATIVE_ARGS *, tree, rtx));
-extern void xtensa_va_start PARAMS ((tree, rtx));
-extern rtx xtensa_va_arg PARAMS ((tree, tree));
+extern void init_cumulative_args (CUMULATIVE_ARGS *, int);
 #endif /* TREE_CODE */
 
-extern void print_operand PARAMS ((FILE *, rtx, int));
-extern void print_operand_address PARAMS ((FILE *, rtx));
-extern void xtensa_output_literal
-  PARAMS ((FILE *, rtx, enum machine_mode, int labelno));
-extern void xtensa_reorg PARAMS ((rtx));
-extern rtx xtensa_return_addr PARAMS ((int, rtx));
-extern rtx xtensa_builtin_saveregs PARAMS ((void));
-extern enum reg_class xtensa_preferred_reload_class
-  PARAMS ((rtx, enum reg_class, int));
-extern enum reg_class xtensa_secondary_reload_class
-  PARAMS ((enum reg_class, enum machine_mode, rtx, int));
-extern int a7_overlap_mentioned_p PARAMS ((rtx x));
+extern void print_operand (FILE *, rtx, int);
+extern void print_operand_address (FILE *, rtx);
+extern bool xtensa_output_addr_const_extra (FILE *, rtx);
+extern void xtensa_output_literal (FILE *, rtx, enum machine_mode, int);
+extern rtx xtensa_return_addr (int, rtx);
+extern enum reg_class xtensa_preferred_reload_class (rtx, enum reg_class, int);
+struct secondary_reload_info;
+extern enum reg_class xtensa_secondary_reload (bool, rtx, enum reg_class,
+                                              enum machine_mode,
+                                              struct secondary_reload_info *);
+extern void xtensa_initialize_trampoline (rtx, rtx, rtx);
 #endif /* RTX_CODE */
 
 #ifdef TREE_CODE
-extern void function_arg_advance
-  PARAMS ((CUMULATIVE_ARGS *, enum machine_mode, tree));
-extern struct rtx_def * function_arg
-  PARAMS ((CUMULATIVE_ARGS *, enum machine_mode, tree, int));
-extern tree xtensa_build_va_list PARAMS ((void));
+extern void function_arg_advance (CUMULATIVE_ARGS *, enum machine_mode, tree);
+extern struct rtx_def *function_arg (CUMULATIVE_ARGS *, enum machine_mode,
+                                    tree, int);
+extern int function_arg_boundary (enum machine_mode, tree);
 #endif /* TREE_CODE */
 
-extern int xtensa_mask_immediate PARAMS ((int));
-extern int xtensa_mem_offset PARAMS ((unsigned, enum machine_mode));
-extern void xtensa_setup_frame_addresses PARAMS ((void));
-extern int xtensa_dbx_register_number PARAMS ((int));
-extern void override_options PARAMS ((void));
-extern long compute_frame_size PARAMS ((int));
-extern int xtensa_frame_pointer_required PARAMS ((void));
-extern void xtensa_function_prologue PARAMS ((FILE *, HOST_WIDE_INT));
-extern void xtensa_function_epilogue PARAMS ((FILE *, HOST_WIDE_INT));
-extern void order_regs_for_local_alloc PARAMS ((void));
+extern void xtensa_setup_frame_addresses (void);
+extern int xtensa_dbx_register_number (int);
+extern void override_options (void);
+extern long compute_frame_size (int);
+extern int xtensa_frame_pointer_required (void);
+extern void xtensa_expand_prologue (void);
+extern void order_regs_for_local_alloc (void);
+extern void xtensa_trampoline_template (FILE *);
 
 #endif /* !__XTENSA_PROTOS_H__ */