]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/config/avr/avr-protos.h
re PR target/49868 (Implement named address space to place/access data in flash memory)
[thirdparty/gcc.git] / gcc / config / avr / avr-protos.h
index 9727274068c7e24c0d23f7b5b6182199c0e85bba..c71bc9df6812b211a58b1cefdf9994502c2f6d87 100644 (file)
@@ -1,13 +1,15 @@
 /* Prototypes for exported functions defined in avr.c
    
-   Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-   Contributed by Denis Chertykov (denisc@overta.ru)
+   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010,
+   2011
+   Free Software Foundation, Inc.
+   Contributed by Denis Chertykov (chertykov@gmail.com)
 
    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)
+   the Free Software Foundation; either version 3, or (at your option)
    any later version.
 
    GCC is distributed in the hope that it will be useful,
    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.  */
-
-
-extern int    function_arg_regno_p              PARAMS ((int r));
-extern void   avr_init_once                     PARAMS ((void));
-extern void   avr_override_options              PARAMS ((void));
-extern void   avr_optimization_options         PARAMS ((int level, int size));
-extern char * avr_change_section                PARAMS ((char *sect_name));
-extern int    avr_ret_register                  PARAMS ((void));
-extern enum reg_class class_likely_spilled_p    PARAMS ((int c));
-extern enum reg_class avr_regno_reg_class       PARAMS ((int r));
-extern enum reg_class avr_reg_class_from_letter PARAMS ((int c));
-extern int    frame_pointer_required_p          PARAMS ((void));
-extern void   asm_globalize_label         PARAMS ((FILE *file, const char *name));
-extern void   order_regs_for_local_alloc  PARAMS ((void));
-extern int    initial_elimination_offset  PARAMS ((int from, int to));
-extern int    avr_simple_epilogue         PARAMS ((void));
-extern void   progmem_section             PARAMS ((void));
-extern int    mask_one_bit_p              PARAMS ((HOST_WIDE_INT mask));
-extern void   gas_output_limited_string PARAMS ((FILE *file, const char *str));
-extern void   gas_output_ascii          PARAMS ((FILE *file, const char *str,
-                                                        size_t length));
-#ifdef TREE_CODE
-extern void   asm_output_external          PARAMS ((FILE *file, tree decl,
-                                                  char *name));
-extern int    avr_progmem_p                PARAMS ((tree decl));
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+
+extern int function_arg_regno_p (int r);
+extern void avr_cpu_cpp_builtins (struct cpp_reader * pfile);
+extern enum reg_class avr_regno_reg_class (int r);
+extern void asm_globalize_label (FILE *file, const char *name);
+extern void avr_asm_declare_function_name (FILE *, const char *, tree);
+extern void order_regs_for_local_alloc (void);
+extern int avr_initial_elimination_offset (int from, int to);
+extern int avr_simple_epilogue (void);
+extern int avr_hard_regno_rename_ok (unsigned int, unsigned int);
+extern rtx avr_return_addr_rtx (int count, rtx tem);
+extern void avr_register_target_pragmas (void);
+extern bool avr_accumulate_outgoing_args (void);
+extern void avr_init_expanders (void);
 
+#ifdef TREE_CODE
+extern void avr_asm_output_aligned_decl_common (FILE*, const_tree, const char*, unsigned HOST_WIDE_INT, unsigned int, bool);
+extern void asm_output_external (FILE *file, tree decl, char *name);
+extern int avr_progmem_p (tree decl, tree attributes);
 
 #ifdef RTX_CODE /* inside TREE_CODE */
-extern rtx    avr_function_value           PARAMS ((tree type, tree func));
-extern void   init_cumulative_args         PARAMS ((CUMULATIVE_ARGS *cum,
-                                                  tree fntype, rtx libname,
-                                                  tree fndecl));
-extern rtx    function_arg         PARAMS ((CUMULATIVE_ARGS *cum,
-                                          enum machine_mode mode,
-                                          tree type, int named));
-
-
+extern void init_cumulative_args (CUMULATIVE_ARGS *cum, tree fntype,
+                                 rtx libname, tree fndecl);
 #endif /* RTX_CODE inside TREE_CODE */
 
-#ifdef HAVE_MACHINE_MODES /* inside TREE_CODE */
-extern void   function_arg_advance PARAMS ((CUMULATIVE_ARGS *cum,
-                                          enum machine_mode mode, tree type,
-                                          int named));
-#endif /* HAVE_MACHINE_MODES inside TREE_CODE*/
 #endif /* TREE_CODE */
 
 #ifdef RTX_CODE
-extern void   asm_output_external_libcall PARAMS ((FILE *file, rtx symref));
-extern int    legitimate_address_p    PARAMS ((enum machine_mode mode, rtx x,
-                                       int strict));
-extern int    compare_diff_p  PARAMS ((rtx insn));
-extern const char * output_movqi    PARAMS ((rtx insn, rtx operands[], int *l));
-extern const char * output_movhi    PARAMS ((rtx insn, rtx operands[], int *l));
-extern const char * out_movqi_r_mr  PARAMS ((rtx insn, rtx op[], int *l));
-extern const char * out_movqi_mr_r  PARAMS ((rtx insn, rtx op[], int *l));
-extern const char * out_movhi_r_mr  PARAMS ((rtx insn, rtx op[], int *l));
-extern const char * out_movhi_mr_r  PARAMS ((rtx insn, rtx op[], int *l));
-extern const char * out_movsi_r_mr  PARAMS ((rtx insn, rtx op[], int *l));
-extern const char * out_movsi_mr_r  PARAMS ((rtx insn, rtx op[], int *l));
-extern const char * output_movsisf  PARAMS ((rtx insn, rtx operands[], int *l));
-extern const char * out_tstsi       PARAMS ((rtx insn, int *l));
-extern const char * out_tsthi       PARAMS ((rtx insn, int *l));
-extern const char * ret_cond_branch PARAMS ((rtx x, int len, int reverse));
-
-extern const char * ashlqi3_out PARAMS ((rtx insn, rtx operands[], int *len));
-extern const char * ashlhi3_out PARAMS ((rtx insn, rtx operands[], int *len));
-extern const char * ashlsi3_out PARAMS ((rtx insn, rtx operands[], int *len));
-
-extern const char * ashrqi3_out PARAMS ((rtx insn, rtx operands[], int *len));
-extern const char * ashrhi3_out PARAMS ((rtx insn, rtx operands[], int *len));
-extern const char * ashrsi3_out PARAMS ((rtx insn, rtx operands[], int *len));
-
-extern const char * lshrqi3_out PARAMS ((rtx insn, rtx operands[], int *len));
-extern const char * lshrhi3_out PARAMS ((rtx insn, rtx operands[], int *len));
-extern const char * lshrsi3_out PARAMS ((rtx insn, rtx operands[], int *len));
-
-extern void avr_output_bld PARAMS ((rtx operands[], int bit_nr));
-extern void avr_output_addr_vec_elt PARAMS ((FILE *stream, int value));
-extern const char *avr_out_sbxx_branch PARAMS ((rtx insn, rtx operands[]));
-
-extern enum reg_class preferred_reload_class PARAMS ((rtx x,
-                                                    enum reg_class class));
-extern int    extra_constraint       PARAMS ((rtx x, int c));
-extern rtx    legitimize_address     PARAMS ((rtx x, rtx oldx,
-                                            enum machine_mode mode));
-extern int    adjust_insn_length     PARAMS ((rtx insn, int len));
-extern rtx    avr_libcall_value      PARAMS ((enum machine_mode mode));
-extern const char * output_reload_inhi PARAMS ((rtx insn, rtx *operands,
-                                               int *len));
-extern const char * output_reload_insisf PARAMS ((rtx insn, rtx *operands,
-                                               int *len));
-extern enum reg_class secondary_input_reload_class PARAMS ((enum reg_class,
-                                                          enum machine_mode,
-                                                          rtx));
-extern void   notice_update_cc       PARAMS ((rtx body, rtx insn));
-extern void   print_operand          PARAMS ((FILE *file, rtx x, int code));
-extern void   print_operand_address  PARAMS ((FILE *file, rtx addr));
-extern int    reg_unused_after       PARAMS ((rtx insn, rtx reg));
-extern int    _reg_unused_after      PARAMS ((rtx insn, rtx reg));
-extern int    avr_jump_mode          PARAMS ((rtx x, rtx insn));
-extern int    byte_immediate_operand PARAMS ((register rtx op,
-                                            enum machine_mode mode));
-extern int    test_hard_reg_class    PARAMS ((enum reg_class class, rtx x));
-extern int    jump_over_one_insn_p   PARAMS ((rtx insn, rtx dest));
-
-extern int    avr_hard_regno_mode_ok PARAMS ((int regno,
-                                            enum machine_mode mode));
-extern int    call_insn_operand      PARAMS ((rtx op, enum machine_mode mode));
-extern void   final_prescan_insn     PARAMS ((rtx insn, rtx *operand,
-                                             int num_operands));
-extern int    avr_simplify_comparison_p PARAMS ((enum machine_mode mode,
-                                             RTX_CODE operator, rtx x));
-extern RTX_CODE avr_normalize_condition  PARAMS ((RTX_CODE condition));
-extern int    compare_eq_p           PARAMS ((rtx insn));
-extern void   out_shift_with_cnt     PARAMS ((const char *template, rtx insn,
-                                             rtx operands[], int *len,
-                                             int t_len));
-extern int    avr_io_address_p      PARAMS ((rtx x, int size));
-extern int    const_int_pow2_p       PARAMS ((rtx x));
-extern int    avr_peep2_scratch_safe PARAMS ((rtx reg_rtx));
+extern const char *output_movqi (rtx insn, rtx operands[], int *l);
+extern const char *output_movhi (rtx insn, rtx operands[], int *l);
+extern const char *out_movqi_r_mr (rtx insn, rtx op[], int *l);
+extern const char *out_movqi_mr_r (rtx insn, rtx op[], int *l);
+extern const char *out_movhi_r_mr (rtx insn, rtx op[], int *l);
+extern const char *out_movhi_mr_r (rtx insn, rtx op[], int *l);
+extern const char *out_movsi_r_mr (rtx insn, rtx op[], int *l);
+extern const char *out_movsi_mr_r (rtx insn, rtx op[], int *l);
+extern const char *output_movsisf (rtx insn, rtx operands[], int *l);
+extern const char *avr_out_tstsi (rtx, rtx*, int*);
+extern const char *avr_out_tsthi (rtx, rtx*, int*);
+extern const char *avr_out_tstpsi (rtx, rtx*, int*);
+extern const char *avr_out_compare (rtx, rtx*, int*);
+extern const char *ret_cond_branch (rtx x, int len, int reverse);
+extern const char *avr_out_movpsi (rtx, rtx*, int*);
+
+extern const char *ashlqi3_out (rtx insn, rtx operands[], int *len);
+extern const char *ashlhi3_out (rtx insn, rtx operands[], int *len);
+extern const char *ashlsi3_out (rtx insn, rtx operands[], int *len);
+
+extern const char *ashrqi3_out (rtx insn, rtx operands[], int *len);
+extern const char *ashrhi3_out (rtx insn, rtx operands[], int *len);
+extern const char *ashrsi3_out (rtx insn, rtx operands[], int *len);
+
+extern const char *lshrqi3_out (rtx insn, rtx operands[], int *len);
+extern const char *lshrhi3_out (rtx insn, rtx operands[], int *len);
+extern const char *lshrsi3_out (rtx insn, rtx operands[], int *len);
+
+extern const char *avr_out_ashlpsi3 (rtx, rtx*, int*);
+extern const char *avr_out_ashrpsi3 (rtx, rtx*, int*);
+extern const char *avr_out_lshrpsi3 (rtx, rtx*, int*);
+
+extern bool avr_rotate_bytes (rtx operands[]);
+
+extern void expand_prologue (void);
+extern void expand_epilogue (bool);
+extern bool avr_emit_movmemhi (rtx*);
+extern int avr_epilogue_uses (int regno);
+extern int avr_starting_frame_offset (void);
+
+extern void avr_output_bld (rtx operands[], int bit_nr);
+extern void avr_output_addr_vec_elt (FILE *stream, int value);
+extern const char *avr_out_sbxx_branch (rtx insn, rtx operands[]);
+extern const char* avr_out_bitop (rtx, rtx*, int*);
+extern const char* avr_out_plus (rtx*, int*, int*);
+extern const char* avr_out_plus_noclobber (rtx*, int*, int*);
+extern const char* avr_out_addto_sp (rtx*, int*);
+extern const char* avr_out_xload (rtx, rtx*, int*);
+extern const char* avr_out_movmem (rtx, rtx*, int*);
+extern bool avr_popcount_each_byte (rtx, int, int);
+
+extern int extra_constraint_Q (rtx x);
+extern int adjust_insn_length (rtx insn, int len);
+extern const char* output_reload_inhi (rtx*, rtx, int*);
+extern const char* output_reload_insisf (rtx*, rtx, int*);
+extern const char* avr_out_reload_inpsi (rtx*, rtx, int*);
+extern void notice_update_cc (rtx body, rtx insn);
+extern void print_operand (FILE *file, rtx x, int code);
+extern void print_operand_address (FILE *file, rtx addr);
+extern int reg_unused_after (rtx insn, rtx reg);
+extern int _reg_unused_after (rtx insn, rtx reg);
+extern int avr_jump_mode (rtx x, rtx insn);
+extern int test_hard_reg_class (enum reg_class rclass, rtx x);
+extern int jump_over_one_insn_p (rtx insn, rtx dest);
+
+extern int avr_hard_regno_mode_ok (int regno, enum machine_mode mode);
+extern void final_prescan_insn (rtx insn, rtx *operand, int num_operands);
+extern int avr_simplify_comparison_p (enum machine_mode mode,
+                                     RTX_CODE op, rtx x);
+extern RTX_CODE avr_normalize_condition (RTX_CODE condition);
+extern void out_shift_with_cnt (const char *templ, rtx insn,
+                               rtx operands[], int *len, int t_len);
+extern reg_class_t avr_mode_code_base_reg_class (enum machine_mode, addr_space_t, RTX_CODE, RTX_CODE);
+extern bool avr_regno_mode_code_ok_for_base_p (int, enum machine_mode, addr_space_t, RTX_CODE, RTX_CODE);
+extern rtx avr_incoming_return_addr_rtx (void);
+extern rtx avr_legitimize_reload_address (rtx*, enum machine_mode, int, int, int, int, rtx (*)(rtx,int));
+extern bool avr_mem_pgm_p (rtx);
+extern bool avr_mem_pgmx_p (rtx);
+extern bool avr_load_libgcc_p (rtx);
+extern bool avr_xload_libgcc_p (enum machine_mode);
 #endif /* RTX_CODE */
 
-#ifdef HAVE_MACHINE_MODES
-extern int    class_max_nregs        PARAMS ((enum reg_class class,
-                                            enum machine_mode mode));
-#endif /* HAVE_MACHINE_MODES */
-
 #ifdef REAL_VALUE_TYPE
+extern void asm_output_float (FILE *file, REAL_VALUE_TYPE n);
+#endif
 
-extern void   asm_output_float       PARAMS ((FILE *file, REAL_VALUE_TYPE n));
+/* From avr-log.c */
 
-#endif
+#define avr_edump (avr_log_set_caller_e (__FUNCTION__))
+#define avr_fdump (avr_log_set_caller_f (__FUNCTION__))
+
+extern int (*avr_log_set_caller_e (const char*))(const char*, ...);
+extern int (*avr_log_set_caller_f (const char*))(FILE*, const char*, ...);
+
+extern void avr_log_set_avr_log (void);
+
+typedef struct
+{
+  unsigned address_cost :1;
+  unsigned constraints :1;
+  unsigned legitimate_address_p :1;
+  unsigned legitimize_address :1;
+  unsigned legitimize_reload_address :1;
+  unsigned progmem :1;
+  unsigned rtx_costs :1;
+} avr_log_t;
+
+extern avr_log_t avr_log;