]>
Commit | Line | Data |
---|---|---|
0d4a78eb | 1 | /* Prototypes for Blackfin functions used in the md file & elsewhere. |
a5544970 | 2 | Copyright (C) 2005-2019 Free Software Foundation, Inc. |
0d4a78eb BS |
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 | |
2f83c7d6 | 8 | the Free Software Foundation; either version 3, or (at your option) |
0d4a78eb BS |
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 | |
2f83c7d6 NC |
17 | along with GCC; see the file COPYING3. If not see |
18 | <http://www.gnu.org/licenses/>. */ | |
0d4a78eb BS |
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 | ||
ea2382be JZ |
25 | /* For the anomaly 05-00-0245 */ |
26 | #define WA_SPECULATIVE_LOADS 0x00000001 | |
27 | #define ENABLE_WA_SPECULATIVE_LOADS \ | |
28 | (bfin_workarounds & WA_SPECULATIVE_LOADS) | |
29 | ||
30 | /* For the anomaly 05-00-0244 */ | |
31 | #define WA_SPECULATIVE_SYNCS 0x00000002 | |
32 | #define ENABLE_WA_SPECULATIVE_SYNCS \ | |
33 | (bfin_workarounds & WA_SPECULATIVE_SYNCS) | |
34 | ||
fa8d4a0f BS |
35 | /* For the anomaly 05-00-0371 */ |
36 | #define WA_RETS 0x00000004 | |
37 | #define ENABLE_WA_RETS \ | |
38 | (bfin_workarounds & WA_RETS) | |
39 | ||
bf85bc3d BS |
40 | /* For the anomaly 05-00-0426 */ |
41 | #define WA_INDIRECT_CALLS 0x00000008 | |
42 | #define ENABLE_WA_INDIRECT_CALLS \ | |
43 | ((bfin_workarounds & WA_INDIRECT_CALLS) && !TARGET_ICPLB) | |
44 | ||
97a988bc | 45 | #define WA_05000257 0x00000010 |
669eeb28 BS |
46 | #define ENABLE_WA_05000257 \ |
47 | (bfin_workarounds & WA_05000257) | |
48 | ||
97a988bc | 49 | #define WA_05000283 0x00000020 |
669eeb28 BS |
50 | #define ENABLE_WA_05000283 \ |
51 | (bfin_workarounds & WA_05000283) | |
52 | ||
97a988bc | 53 | #define WA_05000315 0x00000040 |
669eeb28 BS |
54 | #define ENABLE_WA_05000315 \ |
55 | (bfin_workarounds & WA_05000315) | |
ea2382be | 56 | |
97a988bc BS |
57 | /* For the anomaly 05-00-0312 */ |
58 | #define WA_LOAD_LCREGS 0x00000080 | |
59 | #define ENABLE_WA_LOAD_LCREGS \ | |
60 | (bfin_workarounds & WA_LOAD_LCREGS) | |
61 | ||
b3187e24 BS |
62 | #define WA_05000074 0x00000100 |
63 | #define ENABLE_WA_05000074 \ | |
64 | (bfin_workarounds & WA_05000074) | |
65 | ||
0d4a78eb BS |
66 | extern bool function_arg_regno_p (int); |
67 | ||
68 | extern const char *output_load_immediate (rtx *); | |
69 | extern const char *output_casesi_internal (rtx *); | |
70 | extern char *bfin_asm_long (void); | |
71 | extern char *bfin_asm_short (void); | |
72 | extern int log2constp (unsigned HOST_WIDE_INT); | |
73 | ||
0d4a78eb | 74 | extern void init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx); |
0d4a78eb BS |
75 | extern HOST_WIDE_INT bfin_initial_elimination_offset (int, int); |
76 | ||
ef4bddc2 | 77 | extern int effective_address_32bit_p (rtx, machine_mode); |
0d4a78eb | 78 | extern int symbolic_reference_mentioned_p (rtx); |
ef4bddc2 RS |
79 | extern rtx bfin_gen_compare (rtx, machine_mode); |
80 | extern bool expand_move (rtx *, machine_mode); | |
6d459e2b BS |
81 | extern void bfin_expand_call (rtx, rtx, rtx, rtx, int); |
82 | extern bool bfin_longcall_p (rtx, int); | |
c4963a0a | 83 | extern bool bfin_dsp_memref_p (rtx); |
76715c32 | 84 | extern bool bfin_expand_cpymem (rtx, rtx, rtx, rtx); |
0d4a78eb | 85 | |
1b5f5069 | 86 | extern enum reg_class secondary_input_reload_class (enum reg_class, |
ef4bddc2 | 87 | machine_mode, |
0d4a78eb | 88 | rtx); |
1b5f5069 | 89 | extern enum reg_class secondary_output_reload_class (enum reg_class, |
ef4bddc2 | 90 | machine_mode, |
0d4a78eb BS |
91 | rtx); |
92 | extern char *section_asm_op_1 (SECT_ENUM_T); | |
93 | extern char *section_asm_op (SECT_ENUM_T); | |
0d4a78eb BS |
94 | extern void print_operand (FILE *, rtx, char); |
95 | extern void print_address_operand (FILE *, rtx); | |
96 | extern void split_di (rtx [], int, rtx [], rtx []); | |
97 | extern int split_load_immediate (rtx []); | |
ef4bddc2 | 98 | extern void emit_pic_move (rtx *, machine_mode); |
bd96e53c | 99 | extern void asm_conditional_branch (rtx_insn *, rtx *, int, int); |
ef4bddc2 | 100 | extern rtx bfin_gen_compare (rtx, machine_mode); |
0d4a78eb | 101 | |
d3c176fc | 102 | extern unsigned bfin_local_alignment (tree, unsigned); |
0d4a78eb BS |
103 | extern rtx bfin_va_arg (tree, tree); |
104 | ||
105 | extern void bfin_expand_prologue (void); | |
1f9e4ca1 | 106 | extern void bfin_expand_epilogue (int, int, bool); |
c51392f1 RS |
107 | extern int analyze_push_multiple_operation (rtx); |
108 | extern int analyze_pop_multiple_operation (rtx); | |
0d4a78eb BS |
109 | extern void output_push_multiple (rtx, rtx *); |
110 | extern void output_pop_multiple (rtx, rtx *); | |
111 | extern int bfin_hard_regno_rename_ok (unsigned int, unsigned int); | |
112 | extern rtx bfin_return_addr_rtx (int); | |
b03149e1 | 113 | extern void bfin_hardware_loop (void); |
0d4a78eb BS |
114 | |
115 | #endif | |
116 |