1 /* Definitions of target machine for GNU compiler for
2    Motorola m88100 in an 88open OCS/BCS environment.
3    Copyright (C) 2000 Free Software Foundation, Inc.
4    Contributed by Michael Tiemann (tiemann@cygnus.com).
5    Currently maintained by (gcc@dg-rtp.dg.com)
6 
7 This file is part of GNU CC.
8 
9 GNU CC is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2, or (at your option)
12 any later version.
13 
14 GNU CC is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 GNU General Public License for more details.
18 
19 You should have received a copy of the GNU General Public License
20 along with GNU CC; see the file COPYING.  If not, write to
21 the Free Software Foundation, 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA.  */
23 
24 #ifdef RTX_CODE
25 extern int m88k_debugger_offset PARAMS ((rtx, int));
26 extern void emit_bcnd PARAMS ((enum rtx_code, rtx));
27 extern void expand_block_move PARAMS ((rtx, rtx, rtx *));
28 extern void print_operand PARAMS ((FILE *, rtx, int));
29 extern void print_operand_address PARAMS ((FILE *, rtx));
30 extern const char *output_load_const_int PARAMS ((enum machine_mode, rtx *));
31 extern const char *output_load_const_float PARAMS ((rtx *));
32 extern const char *output_load_const_double PARAMS ((rtx *));
33 extern const char *output_load_const_dimode PARAMS ((rtx *));
34 extern const char *output_and PARAMS ((rtx[]));
35 extern const char *output_ior PARAMS ((rtx[]));
36 extern const char *output_xor PARAMS ((rtx[]));
37 extern const char *output_call PARAMS ((rtx[], rtx));
38 
39 extern struct rtx_def *emit_test PARAMS ((enum rtx_code, enum machine_mode));
40 extern struct rtx_def *legitimize_address PARAMS ((int, rtx, rtx, rtx));
41 extern struct rtx_def *legitimize_operand PARAMS ((rtx, enum machine_mode));
42 
43 extern int pic_address_needs_scratch PARAMS ((rtx));
44 extern int symbolic_address_p PARAMS ((rtx));
45 extern int condition_value PARAMS ((rtx));
46 extern int emit_move_sequence PARAMS ((rtx *, enum machine_mode, rtx));
47 extern int mostly_false_jump PARAMS ((rtx, rtx));
48 extern int real_power_of_2_operand PARAMS ((rtx, enum machine_mode));
49 extern int move_operand PARAMS ((rtx, enum machine_mode));
50 extern int call_address_operand PARAMS ((rtx, enum machine_mode));
51 extern int reg_or_0_operand PARAMS ((rtx, enum machine_mode));
52 extern int arith_operand PARAMS ((rtx, enum machine_mode));
53 extern int arith5_operand PARAMS ((rtx, enum machine_mode));
54 extern int arith32_operand PARAMS ((rtx, enum machine_mode));
55 extern int arith64_operand PARAMS ((rtx, enum machine_mode));
56 extern int int5_operand PARAMS ((rtx, enum machine_mode));
57 extern int int32_operand PARAMS ((rtx, enum machine_mode));
58 extern int add_operand PARAMS ((rtx, enum machine_mode));
59 extern int reg_or_bbx_mask_operand PARAMS ((rtx, enum machine_mode));
60 extern int real_or_0_operand PARAMS ((rtx, enum machine_mode));
61 extern int partial_ccmode_register_operand PARAMS ((rtx, enum machine_mode));
62 extern int relop PARAMS ((rtx, enum machine_mode));
63 extern int even_relop PARAMS ((rtx, enum machine_mode));
64 extern int odd_relop PARAMS ((rtx, enum machine_mode));
65 extern int relop_no_unsigned PARAMS ((rtx, enum machine_mode));
66 extern int equality_op PARAMS ((rtx, enum machine_mode));
67 extern int pc_or_label_ref PARAMS ((rtx, enum machine_mode));
68 extern int symbolic_operand PARAMS ((rtx, enum machine_mode));
69 #ifdef TREE_CODE
70 extern void m88k_va_start PARAMS ((tree, rtx));
71 #endif /* TREE_CODE */
72 #endif /* RTX_CODE */
73 
74 extern void output_file_start PARAMS ((FILE *));
75 
76 extern int null_prologue PARAMS ((void));
77 extern int integer_ok_for_set PARAMS ((unsigned));
78 extern void m88k_layout_frame PARAMS ((void));
79 extern void m88k_expand_prologue PARAMS ((void));
80 extern void m88k_expand_epilogue PARAMS ((void));
81 extern void output_function_profiler PARAMS ((FILE *, int, const char *));
82 extern void output_ascii PARAMS ((FILE *, const char *, int,
83 				  const char *, int));
84 extern void output_label PARAMS ((int));
85 extern void m88k_setup_incoming_varargs PARAMS ((CUMULATIVE_ARGS *,
86 						 enum machine_mode, tree, int *,
87 						 int));
88 extern enum m88k_instruction classify_integer PARAMS ((enum machine_mode, int));
89 extern int mak_mask_p PARAMS ((int));
90 
91 #ifdef TREE_CODE
92 extern struct rtx_def *m88k_function_arg PARAMS ((CUMULATIVE_ARGS,
93 						  enum machine_mode, tree,
94 						  int));
95 extern void m88k_function_arg_advance PARAMS ((CUMULATIVE_ARGS *,
96 					       enum machine_mode, tree, int));
97 extern int m88k_function_arg_pass_by_reference PARAMS ((CUMULATIVE_ARGS *,
98 							enum machine_mode,
99 							tree, int));
100 extern struct rtx_def *m88k_va_arg PARAMS ((tree, tree));
101 extern tree m88k_build_va_list PARAMS ((void));
102 #endif /* TREE_CODE */
103 
104 extern void m88k_override_options PARAMS ((void));
105