Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/bfin/bfin-protos.h @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children | 77e2b8dfacca |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
1 /* Prototypes for Blackfin functions used in the md file & elsewhere. | |
2 Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc. | |
3 | |
4 This file is part of GNU CC. | |
5 | |
6 GNU CC is free software; you can redistribute it and/or modify | |
7 it under the terms of the GNU General Public License as published by | |
8 the Free Software Foundation; either version 3, or (at your option) | |
9 any later version. | |
10 | |
11 GNU CC is distributed in the hope that it will be useful, | |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with GCC; see the file COPYING3. If not see | |
18 <http://www.gnu.org/licenses/>. */ | |
19 | |
20 /* Function prototypes that cannot exist in bfin.h due to dependency | |
21 complications. */ | |
22 #ifndef GCC_BFIN_PROTOS_H | |
23 #define GCC_BFIN_PROTOS_H | |
24 | |
25 /* CPU type. */ | |
26 typedef enum bfin_cpu_type | |
27 { | |
28 BFIN_CPU_UNKNOWN, | |
29 BFIN_CPU_BF512, | |
30 BFIN_CPU_BF514, | |
31 BFIN_CPU_BF516, | |
32 BFIN_CPU_BF518, | |
33 BFIN_CPU_BF522, | |
34 BFIN_CPU_BF523, | |
35 BFIN_CPU_BF524, | |
36 BFIN_CPU_BF525, | |
37 BFIN_CPU_BF526, | |
38 BFIN_CPU_BF527, | |
39 BFIN_CPU_BF531, | |
40 BFIN_CPU_BF532, | |
41 BFIN_CPU_BF533, | |
42 BFIN_CPU_BF534, | |
43 BFIN_CPU_BF536, | |
44 BFIN_CPU_BF537, | |
45 BFIN_CPU_BF538, | |
46 BFIN_CPU_BF539, | |
47 BFIN_CPU_BF542, | |
48 BFIN_CPU_BF544, | |
49 BFIN_CPU_BF547, | |
50 BFIN_CPU_BF548, | |
51 BFIN_CPU_BF549, | |
52 BFIN_CPU_BF561 | |
53 } bfin_cpu_t; | |
54 | |
55 /* Value of -mcpu= */ | |
56 extern bfin_cpu_t bfin_cpu_type; | |
57 | |
58 /* Value of -msi-revision= */ | |
59 extern int bfin_si_revision; | |
60 | |
61 extern unsigned int bfin_workarounds; | |
62 | |
63 /* For the anomaly 05-00-0245 */ | |
64 #define WA_SPECULATIVE_LOADS 0x00000001 | |
65 #define ENABLE_WA_SPECULATIVE_LOADS \ | |
66 (bfin_workarounds & WA_SPECULATIVE_LOADS) | |
67 | |
68 /* For the anomaly 05-00-0244 */ | |
69 #define WA_SPECULATIVE_SYNCS 0x00000002 | |
70 #define ENABLE_WA_SPECULATIVE_SYNCS \ | |
71 (bfin_workarounds & WA_SPECULATIVE_SYNCS) | |
72 | |
73 /* For the anomaly 05-00-0371 */ | |
74 #define WA_RETS 0x00000004 | |
75 #define ENABLE_WA_RETS \ | |
76 (bfin_workarounds & WA_RETS) | |
77 | |
78 /* For the anomaly 05-00-0426 */ | |
79 #define WA_INDIRECT_CALLS 0x00000008 | |
80 #define ENABLE_WA_INDIRECT_CALLS \ | |
81 ((bfin_workarounds & WA_INDIRECT_CALLS) && !TARGET_ICPLB) | |
82 | |
83 #define WA_05000257 0x00000040 | |
84 #define ENABLE_WA_05000257 \ | |
85 (bfin_workarounds & WA_05000257) | |
86 | |
87 #define WA_05000283 0x00000010 | |
88 #define ENABLE_WA_05000283 \ | |
89 (bfin_workarounds & WA_05000283) | |
90 | |
91 #define WA_05000315 0x00000020 | |
92 #define ENABLE_WA_05000315 \ | |
93 (bfin_workarounds & WA_05000315) | |
94 | |
95 #define Mmode enum machine_mode | |
96 | |
97 extern rtx function_arg (CUMULATIVE_ARGS *, Mmode, tree, int); | |
98 extern void function_arg_advance (CUMULATIVE_ARGS *, Mmode, tree, int); | |
99 extern bool function_arg_regno_p (int); | |
100 | |
101 extern const char *output_load_immediate (rtx *); | |
102 extern const char *output_casesi_internal (rtx *); | |
103 extern char *bfin_asm_long (void); | |
104 extern char *bfin_asm_short (void); | |
105 extern int log2constp (unsigned HOST_WIDE_INT); | |
106 | |
107 extern rtx legitimize_address (rtx, rtx, Mmode); | |
108 extern bool bfin_legitimate_constant_p (rtx); | |
109 extern int hard_regno_mode_ok (int, Mmode); | |
110 extern void init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx); | |
111 extern int bfin_frame_pointer_required (void); | |
112 extern HOST_WIDE_INT bfin_initial_elimination_offset (int, int); | |
113 | |
114 extern int effective_address_32bit_p (rtx, Mmode); | |
115 extern int symbolic_reference_mentioned_p (rtx); | |
116 extern rtx bfin_gen_compare (rtx, Mmode); | |
117 extern bool expand_move (rtx *, Mmode); | |
118 extern void bfin_expand_call (rtx, rtx, rtx, rtx, int); | |
119 extern bool bfin_longcall_p (rtx, int); | |
120 extern bool bfin_dsp_memref_p (rtx); | |
121 extern bool bfin_expand_movmem (rtx, rtx, rtx, rtx); | |
122 | |
123 extern void conditional_register_usage (void); | |
124 extern int bfin_register_move_cost (enum machine_mode, enum reg_class, | |
125 enum reg_class); | |
126 extern int bfin_memory_move_cost (enum machine_mode, enum reg_class, int in); | |
127 extern enum reg_class secondary_input_reload_class (enum reg_class, Mmode, | |
128 rtx); | |
129 extern enum reg_class secondary_output_reload_class (enum reg_class, Mmode, | |
130 rtx); | |
131 extern char *section_asm_op_1 (SECT_ENUM_T); | |
132 extern char *section_asm_op (SECT_ENUM_T); | |
133 extern void override_options (void); | |
134 extern void print_operand (FILE *, rtx, char); | |
135 extern void print_address_operand (FILE *, rtx); | |
136 extern void split_di (rtx [], int, rtx [], rtx []); | |
137 extern int split_load_immediate (rtx []); | |
138 extern void emit_pic_move (rtx *, Mmode); | |
139 extern void override_options (void); | |
140 extern void asm_conditional_branch (rtx, rtx *, int, int); | |
141 extern rtx bfin_gen_compare (rtx, Mmode); | |
142 | |
143 extern int bfin_local_alignment (tree, int); | |
144 extern void initialize_trampoline (rtx, rtx, rtx); | |
145 extern bool bfin_legitimate_address_p (Mmode, rtx, int); | |
146 extern rtx bfin_va_arg (tree, tree); | |
147 | |
148 extern void bfin_expand_prologue (void); | |
149 extern void bfin_expand_epilogue (int, int, bool); | |
150 extern int push_multiple_operation (rtx, Mmode); | |
151 extern int pop_multiple_operation (rtx, Mmode); | |
152 extern void output_push_multiple (rtx, rtx *); | |
153 extern void output_pop_multiple (rtx, rtx *); | |
154 extern int bfin_hard_regno_rename_ok (unsigned int, unsigned int); | |
155 extern rtx bfin_return_addr_rtx (int); | |
156 extern void bfin_hardware_loop (void); | |
157 #undef Mmode | |
158 | |
159 #endif | |
160 |