OSDN Git Service

* MAINTAINERS: Add myself as a maintainer for the RX port.
[pf3gnuchains/gcc-fork.git] / libgcc / config / rx / rx-abi.h
1 /* Header file for RX ABI versions of libgcc functions.
2    Copyright (C) 2009
3    Free Software Foundation, Inc.
4    Contributed by Red Hat.
5
6    This file is part of GCC.
7
8    GCC is free software; you can redistribute it and/or modify it
9    under the terms of the GNU General Public License as published
10    by the Free Software Foundation; either version 3, or (at your
11    option) any later version.
12
13    GCC is distributed in the hope that it will be useful, but WITHOUT
14    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
16    License for more details.
17
18    Under Section 7 of GPL version 3, you are granted additional
19    permissions described in the GCC Runtime Library Exception, version
20    3.1, as published by the Free Software Foundation.
21
22    You should have received a copy of the GNU General Public License
23    along with GCC; see the file COPYING3.  If not see
24    <http://www.gnu.org/licenses/>.  */
25
26 /* Make __COM_<RX_NAME> an alias for __<GCC_NAME>.  */
27 #define RENAME_LIBRARY(GCC_NAME, RX_NAME)               \
28   __asm__ (".globl\t__COM_" #RX_NAME "\n"               \
29            ".set\t__COM_" #RX_NAME ", ___" #GCC_NAME "\n");
30
31
32 /* The long-long aliases...  */
33
34 #ifdef L_muldi3
35 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (muldi3, MUL64)
36 #endif
37
38 #ifdef L_divdi3
39 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (divdi3, DIV64s)
40 #endif
41
42 #ifdef L_udivdi3
43 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (udivdi3, DIV64u)
44 #endif
45
46 #ifdef L_ashldi3
47 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (ashldi3, SHLL64)
48 #endif
49
50 #ifdef L_lshrdi3
51 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (lshrdi3, SHLR64)
52 #endif
53
54 #ifdef L_ashrdi3
55 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (ashrdi3, SHAR64)
56 #endif
57
58 #ifdef L_fixsfdi
59 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfdi, CONVf64s)
60 #endif
61
62 #ifdef L_fixunssfdi
63 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfdi, CONVf64u)
64 #endif
65
66 #ifdef L_floatdisf
67 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, CONV64sf)
68 #endif
69
70 #ifdef L_floatundisf
71 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatundisf, CONV64uf)
72 #endif
73
74 #ifdef L_moddi3
75 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (moddi3, MOD64s)
76 #endif
77
78 #ifdef L_umoddi3
79 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (umoddi3, MOD64u)
80 #endif
81
82
83 #ifdef L_si_to_sf
84 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatsisf, CONV32sf)
85 #endif
86
87 #ifdef L_usi_to_sf
88 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatunsisf, CONV32uf)
89 #endif
90
91
92
93 #ifdef __RX_64BIT_DOUBLES__
94
95 /* Float (32-bit) aliases...  */
96
97 #ifdef L_sf_to_si
98 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfsi, CONVf32s)
99 #endif
100
101 #ifdef L_fixunssfsi
102 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfsi, CONVf32u)
103 #endif
104
105 #ifdef L_addsub_sf
106 #define DECLARE_LIBRARY_RENAMES \
107   RENAME_LIBRARY (addsf3, ADDf) \
108   RENAME_LIBRARY (subsf3, SUBf)
109 #endif
110
111 #ifdef L_mul_sf
112 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (mulsf3, MULf)
113 #endif
114
115 #ifdef L_div_sf
116 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (divsf3, DIVf)
117 #endif
118
119 /* Double (64-bit) aliases...  */
120
121 #ifdef L_addsub_df
122 #define DECLARE_LIBRARY_RENAMES \
123   RENAME_LIBRARY (adddf3, ADDd) \
124   RENAME_LIBRARY (subdf3, SUBd)
125 #endif
126
127 #ifdef L_mul_df
128 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (muldf3, MULd)
129 #endif
130
131 #ifdef L_div_df
132 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (divdf3, DIVd)
133 #endif
134
135 #ifdef L_fixdfdi
136 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfdi, CONVd64s)
137 #endif
138
139 #ifdef L_fixunsdfdi
140 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfdi, CONVd64u)
141 #endif
142
143 #ifdef L_floatdidf
144 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, CONV64sd)
145 #endif
146
147 #ifdef L_floatundidf
148 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, CONV64ud)
149 #endif
150
151 #ifdef L_df_to_si
152 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfsi, CONVd32s)
153 #endif
154
155 #ifdef L_fixunsdfsi
156 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfsi, CONVd32u)
157 #endif
158
159 #ifdef L_si_to_df
160 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatsidf, CONV32sd)
161 #endif
162
163 #ifdef L_usi_to_df
164 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatunsidf, CONV32ud)
165 #endif
166
167 #ifdef L_sf_to_df
168 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (extendsfdf2, CONVfd)
169 #endif
170
171 #ifdef L_df_to_sf
172 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (truncdfsf2, CONVdf)
173 #endif
174
175 #ifdef L_negate_df
176 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (negdf2, NEGd)
177 #endif
178
179 /* The 64-bit comparison functions do not have aliases because libgcc2
180    does not provide them.  Instead they have to be supplied in
181    rx-abi-functions.c.  */
182
183
184 #else /* 32-bit doubles.  */
185
186
187 #ifdef L_addsub_sf
188 #define DECLARE_LIBRARY_RENAMES \
189   RENAME_LIBRARY (addsf3, ADDd) \
190   RENAME_LIBRARY (subsf3, SUBd) \
191   RENAME_LIBRARY (addsf3, ADDf) \
192   RENAME_LIBRARY (subsf3, SUBf)
193 #endif
194
195 #ifdef L_mul_sf
196 #define DECLARE_LIBRARY_RENAMES \
197   RENAME_LIBRARY (mulsf3, MULd) \
198   RENAME_LIBRARY (mulsf3, MULf)
199 #endif
200
201 #ifdef L_div_sf
202 #define DECLARE_LIBRARY_RENAMES \
203   RENAME_LIBRARY (divsf3, DIVd) \
204   RENAME_LIBRARY (divsf3, DIVf)
205 #endif
206
207 #ifdef L_sf_to_si
208 #define DECLARE_LIBRARY_RENAMES \
209   RENAME_LIBRARY (fixsfsi, CONVd32s) \
210   RENAME_LIBRARY (fixsfsi, CONVf32s)
211 #endif
212
213 #ifdef L_fixunssfsi
214 #define DECLARE_LIBRARY_RENAMES \
215   RENAME_LIBRARY (fixunssfsi, CONVd32u) \
216   RENAME_LIBRARY (fixunssfsi, CONVf32u)
217 #endif
218
219 #ifdef L_si_to_sf
220 #define DECLARE_LIBRARY_RENAMES \
221   RENAME_LIBRARY (floatsisf, CONV32sd) \
222   RENAME_LIBRARY (floatsisf, CONV32sf)
223 #endif
224
225 #ifdef L_usi_to_sf
226 #define DECLARE_LIBRARY_RENAMES \
227   RENAME_LIBRARY (floatunsisf, CONV32ud) \
228   RENAME_LIBRARY (floatunsisf, CONV32uf)
229 #endif
230
231 #ifdef L_negate_sf
232 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (negsf2, NEGd)
233 #endif
234
235 #endif /* 64-bit vs 32-bit doubles.  */