Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > by-pkgid > 0b3d13642d883165d4fd14ee7c8ea3e3 > files > 53

cross-pic30-elf-gcc-debug-3.3.mplab.2.01-2mdk.i586.rpm

/* Definitions of target machine for GNU compiler.  dsPIC30.
   Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999
   Free Software Foundation, Inc.

   Contributed by John Elliott (john.elliott@microchip.com)

   This file is part of GNU CC.

   GNU CC 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 version.

   GNU CC is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or 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 GNU CC; see the file COPYING.  If not, write to
   the Free Software Foundation, 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.  */

#ifndef GCC_PIC30_PROTOS_H
#define GCC_PIC30_PROTOS_H

struct cpp_reader;

extern tree pic30_identUnsafe[2];

extern int pic30_volatile_operand(rtx opnd, enum machine_mode mode);
extern int pic30_register_operand(rtx op, enum machine_mode mode);
extern int pic30_awb_operand(rtx op, enum machine_mode mode);
extern int pic30_mac_input_operand(rtx op, enum machine_mode mode);
extern int pic30_xprefetch_operand(rtx op, enum machine_mode mode);
extern int pic30_yprefetch_operand(rtx op, enum machine_mode mode);
extern int pic30_accumulator_operand(rtx op, enum machine_mode mode);
extern int pic30_immediate_1bit_operand(rtx op, enum machine_mode mode);
extern int pic30_invalid_address_operand(rtx op, enum machine_mode mode);
extern int pic30_pushed_constant_section(void);
extern void pic30_push_constant_section(tree);
extern void pic30_pop_constant_section(tree);
extern int pic30_asm_function_p(int);
extern int	pic30_interrupt_function_p(tree);
extern int      pic30_dat_alignment(tree, int);
extern void     pic30_cache_conversion_state(rtx, tree);
extern int      pic30_check_for_conversion(rtx);
extern const char *pic30_strip_name_encoding(const char *);
extern int	pic30_pp_modify_valid(rtx);
extern void     pic30_override_options(void);
extern void     pic30_sdb_end_prologue(unsigned int);
extern void     pic30_start_source_file(unsigned int, const char *);
extern void	pic30_initial_elimination_offset(int, int, int *);
extern char *	pic30_text_section_asm_op(void);
extern char *	pic30_data_section_asm_op(void);
extern char *	pic30_const_section_asm_op(void);
extern char *   pic30_interrupt_preprologue(void);
extern void	pic30_handle_interrupt_pragma(struct cpp_reader *);
extern void	pic30_handle_code_pragma(struct cpp_reader *);
extern void	pic30_handle_idata_pragma(struct cpp_reader *);
extern void	pic30_handle_udata_pragma(struct cpp_reader *);
extern int	pic30_hard_regno_mode_ok(int, enum machine_mode);
extern void	pic30_expand_prologue(void);
extern void	pic30_expand_epilogue(void);
extern int	pic30_null_epilogue_p(void);
extern int	pic30_which_bit(int);
extern int	pic30_one_bit_set_p(int);
extern int	pic30_libcall(const char *);
extern void	ndata_section(void);
extern void	const_section(void);
extern void	dconst_section(void);
extern void	ndconst_section(void);
extern char *	pic30_text_section_asm_op(void);
extern char *	pic30_data_section_asm_op(void);
extern char *	pic30_ndata_section_asm_op(void);
extern char *	pic30_const_section_asm_op(void);
extern char *	pic30_dconst_section_asm_op(void);
extern char *	pic30_ndconst_section_asm_op(void);
extern void	pic30_asm_file_start(FILE *);
extern void	pic30_asm_output_ascii(FILE *, char *, int);
extern void	pic30_asm_file_end(FILE *);
extern void	pic30_asm_output_common(FILE *, char *, int, int);
extern void	pic30_asm_output_aligned_common(FILE *, tree, char *, int, int);
extern void	pic30_asm_output_local(FILE *, char *, int, int);
extern void	pic30_asm_output_aligned_decl_local(FILE *, tree, char *, int, int);
extern void     pic30_asm_output_align(FILE *file, int log);
extern void	pic30_function_profiler(FILE *,int);

extern void	pic30_set_function_return(int bState);
extern int	pic30_get_function_return(void);


#ifdef TREE_CODE
extern int	pic30_valid_machine_decl_interrupt_attribute(tree, char *);
#if 0
extern int	pic30_codespace_decl_p(tree);
#endif
extern int	pic30_far_decl_p(tree);
extern int	pic30_near_decl_p(tree);
extern void	pic30_insert_attributes(tree, tree *, tree *);
extern void	pic30_encode_section_info(tree, int);
#if 0
extern void	pic30_asm_output_section_name(FILE *, tree, char *, int);
#endif
extern void	pic30_asm_declare_function_name(FILE *, char *, tree);
extern void	pic30_asm_declare_object_name(FILE *, char *, tree);
extern void	pic30_select_section(tree, int, unsigned HOST_WIDE_INT);
extern int	pic30_shadow_function_p(tree);
extern int	pic30_data_alignment(tree type, int align);
#endif /* TREE_CODE */


#if defined(RTX_CODE) && defined(TREE_CODE)
extern struct rtx_def *
pic30_function_arg(CUMULATIVE_ARGS *, enum machine_mode, tree, int);
extern int
pic30_function_arg_partial_nregs(CUMULATIVE_ARGS,enum machine_mode,tree,int);
extern void
pic30_function_arg_advance(CUMULATIVE_ARGS *,enum machine_mode,tree,int);
extern void
pic30_init_cumulative_args(CUMULATIVE_ARGS *,tree,rtx);
extern rtx
pic30_expand_builtin PARAMS ((tree, rtx, rtx, enum machine_mode, int));
#endif /* TREE_CODE and RTX_CODE*/


#ifdef RTX_CODE
extern int		pic30_dead_or_set_p(rtx first, rtx reg);
extern void		pic30_final_prescan_insn(rtx, rtx*, int);
extern int		pic30_address_cost(rtx);
extern void		pic30_emit_move_sequence(rtx *, enum machine_mode);
extern void		pic30_print_operand(FILE *, rtx, int);
extern void		pic30_print_operand_address(FILE *, rtx);
extern void		pic30_notice_update_cc(rtx, rtx);
extern int 		pic30_check_legit_addr(enum machine_mode, rtx, int);
extern struct rtx_def *	pic30_return_addr_rtx(int, rtx);
extern char *		pic30_conditional_branch(enum rtx_code, rtx);
extern const char *	pic30_compare(rtx *);
extern void		pic30_asm_output_short(FILE *, rtx);
extern int		pic30_I_operand(rtx, enum machine_mode);
extern int		pic30_O_operand(rtx, enum machine_mode);
extern int		pic30_P_operand(rtx, enum machine_mode);
extern int		pic30_Q_constraint(rtx);
extern int		pic30_Q_operand(rtx, enum machine_mode);
extern int		pic30_R_constraint(rtx);
extern int		pic30_R_operand(rtx, enum machine_mode);
extern int		pic30_S_constraint(rtx);
extern int		pic30_S_operand(rtx, enum machine_mode);
extern int		pic30_T_constraint(rtx);
extern int		pic30_T_operand(rtx, enum machine_mode);
extern int		pic30_U_constraint(rtx);
extern int		pic30_U_operand(rtx, enum machine_mode);
extern int		pic30_J_operand(rtx, enum machine_mode);
extern int		pic30_JM_operand(rtx, enum machine_mode);
extern int		pic30_JN_operand(rtx, enum machine_mode);
extern int		pic30_PN_operand(rtx, enum machine_mode);
extern int		pic30_M_operand(rtx, enum machine_mode);
extern int		pic30_rR_or_zero_operand(rtx, enum machine_mode);
extern int		pic30_rR_or_JN_operand(rtx, enum machine_mode);
extern int		pic30_reg_or_P_operand(rtx, enum machine_mode);
extern int		pic30_reg_or_R_operand(rtx, enum machine_mode);
extern int		pic30_reg_or_zero_operand(rtx, enum machine_mode);
extern int		pic30_reg_or_imm_operand(rtx, enum machine_mode);
extern int		pic30_valid_call_address_operand(rtx, enum machine_mode);
extern int		pic30_call_address_operand(rtx, enum machine_mode);
extern int		pic30_symbolic_address_operand(rtx, enum machine_mode);
extern int		pic30_imm8_operand(rtx, enum machine_mode);
extern int		pic30_imm2to15_operand(rtx, enum machine_mode);
extern int		pic30_imm16plus_operand(rtx, enum machine_mode);
extern int		pic30_inc_imm_operand(rtx, enum machine_mode);
extern int		pic30_mode1_operand(rtx, enum machine_mode);
extern int		pic30_mode1J_operand(rtx, enum machine_mode);
extern int		pic30_mode1JN_operand(rtx, enum machine_mode);
extern int		pic30_mode1P_operand(rtx, enum machine_mode);
extern int		pic30_mode1PN_operand(rtx, enum machine_mode);
extern int		pic30_near_mode1PN_operand(rtx, enum machine_mode);
extern int		pic30_indirect_mem_operand(rtx, enum machine_mode);
extern int	        pic30_indirect_mem_operand_modify(rtx,enum machine_mode);
extern int		pic30_mode2_operand(rtx, enum machine_mode);
extern int		pic30_mode2res_operand(rtx, enum machine_mode);
extern int		pic30_mode2mres_operand(rtx, enum machine_mode);
extern int		pic30_mode2_or_P_operand(rtx, enum machine_mode);
extern int		pic30_mode3_operand(rtx, enum machine_mode);
extern int		pic30_modek_operand(rtx, enum machine_mode);
extern int		pic30_math_operand(rtx, enum machine_mode);
extern int		pic30_move_operand(rtx, enum machine_mode);
extern int		pic30_move2_operand(rtx, enum machine_mode);
extern int		pic30_code_operand(rtx, enum machine_mode);
extern int		pic30_data_operand(rtx, enum machine_mode);
extern int		pic30_rR_or_near_operand(rtx, enum machine_mode);
extern int		pic30_reg_imm_or_near_operand(rtx, enum machine_mode);
extern int		pic30_reg_or_code_operand(rtx, enum machine_mode);
extern int		pic30_reg_or_near_operand(rtx, enum machine_mode);
extern int		pic30_wreg_operand(rtx, enum machine_mode);
extern int		pic30_wreg_or_near_operand(rtx, enum machine_mode);
extern int		pic30_breg_operand(rtx, enum machine_mode);
extern int		pic30_creg_operand(rtx, enum machine_mode);
extern int		pic30_ereg_operand(rtx, enum machine_mode);
extern int		pic30_near_operand(rtx, enum machine_mode);
extern int		pic30_near_math_operand(rtx, enum machine_mode);
extern int		pic30_near_mode2_operand(rtx, enum machine_mode);
extern int		pic30_neardata_space_operand_p(rtx);
extern int		pic30_IndexEqual(rtx, rtx);
extern int		pic30_Q_base(rtx);
extern int		pic30_Q_displacement(rtx);
extern int		pic30_registerpairs_p(rtx, rtx, rtx, rtx);
extern int		pic30_near_function_p(rtx);
extern int		pic30_shadow_operand_p(rtx);
extern int		pic30_data_space_operand_p(rtx);
extern int		pic30_has_space_operand_p(rtx, char *);
extern int		pic30_program_space_operand_p(rtx);
extern enum reg_class	pic30_preferred_reload_class(rtx, enum reg_class);
extern enum reg_class	pic30_secondary_reload_class(enum reg_class,
							enum machine_mode, rtx);
extern void           pic30_asm_output_case_label(FILE *, char *, int, rtx);
extern void           pic30_asm_output_case_end(FILE *, int, rtx);

#endif /* RTX_CODE */

#ifdef GCC_C_PRAGMA_H
#endif

#endif /* ! GCC_PIC30_PROTOS_H */