Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/arm/aout.h @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | f6334be47118 |
children | 84e7813d76e9 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* Definitions of target machine for GNU compiler, for ARM with a.out | 1 /* Definitions of target machine for GNU compiler, for ARM with a.out |
2 Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2004, 2007, 2008, 2010 | 2 Copyright (C) 1995-2017 Free Software Foundation, Inc. |
3 Free Software Foundation, Inc. | |
4 Contributed by Richard Earnshaw (rearnsha@armltd.co.uk). | 3 Contributed by Richard Earnshaw (rearnsha@armltd.co.uk). |
5 | 4 |
6 This file is part of GCC. | 5 This file is part of GCC. |
7 | 6 |
8 GCC is free software; you can redistribute it and/or modify it | 7 GCC is free software; you can redistribute it and/or modify it |
13 GCC is distributed in the hope that it will be useful, but WITHOUT | 12 GCC is distributed in the hope that it will be useful, but WITHOUT |
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | 13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
15 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public | 14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public |
16 License for more details. | 15 License for more details. |
17 | 16 |
18 You should have received a copy of the GNU General Public License | 17 Under Section 7 of GPL version 3, you are granted additional |
19 along with GCC; see the file COPYING3. If not see | 18 permissions described in the GCC Runtime Library Exception, version |
19 3.1, as published by the Free Software Foundation. | |
20 | |
21 You should have received a copy of the GNU General Public License and | |
22 a copy of the GCC Runtime Library Exception along with this program; | |
23 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
20 <http://www.gnu.org/licenses/>. */ | 24 <http://www.gnu.org/licenses/>. */ |
21 | 25 |
22 #ifndef ASM_APP_ON | 26 #ifndef ASM_APP_ON |
23 #define ASM_APP_ON "" | 27 #define ASM_APP_ON "" |
24 #endif | 28 #endif |
49 /* The assembler's names for the registers. Note that the ?xx registers are | 53 /* The assembler's names for the registers. Note that the ?xx registers are |
50 there so that VFPv3/NEON registers D16-D31 have the same spacing as D0-D15 | 54 there so that VFPv3/NEON registers D16-D31 have the same spacing as D0-D15 |
51 (each of which is overlaid on two S registers), although there are no | 55 (each of which is overlaid on two S registers), although there are no |
52 actual single-precision registers which correspond to D16-D31. */ | 56 actual single-precision registers which correspond to D16-D31. */ |
53 #ifndef REGISTER_NAMES | 57 #ifndef REGISTER_NAMES |
54 #define REGISTER_NAMES \ | 58 #define REGISTER_NAMES \ |
55 { \ | 59 { \ |
56 "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", \ | 60 "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", \ |
57 "r8", "r9", "sl", "fp", "ip", "sp", "lr", "pc", \ | 61 "r8", "r9", "r10", "fp", "ip", "sp", "lr", "pc", \ |
58 "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \ | 62 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", \ |
59 "cc", "sfp", "afp", \ | 63 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ |
60 "mv0", "mv1", "mv2", "mv3", \ | 64 "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ |
61 "mv4", "mv5", "mv6", "mv7", \ | 65 "s24", "s25", "s26", "s27", "s28", "s29", "s30", "s31", \ |
62 "mv8", "mv9", "mv10", "mv11", \ | 66 "d16", "?16", "d17", "?17", "d18", "?18", "d19", "?19", \ |
63 "mv12", "mv13", "mv14", "mv15", \ | 67 "d20", "?20", "d21", "?21", "d22", "?22", "d23", "?23", \ |
64 "wcgr0", "wcgr1", "wcgr2", "wcgr3", \ | 68 "d24", "?24", "d25", "?25", "d26", "?26", "d27", "?27", \ |
65 "wr0", "wr1", "wr2", "wr3", \ | 69 "d28", "?28", "d29", "?29", "d30", "?30", "d31", "?31", \ |
66 "wr4", "wr5", "wr6", "wr7", \ | 70 "wr0", "wr1", "wr2", "wr3", \ |
67 "wr8", "wr9", "wr10", "wr11", \ | 71 "wr4", "wr5", "wr6", "wr7", \ |
68 "wr12", "wr13", "wr14", "wr15", \ | 72 "wr8", "wr9", "wr10", "wr11", \ |
69 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", \ | 73 "wr12", "wr13", "wr14", "wr15", \ |
70 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ | 74 "wcgr0", "wcgr1", "wcgr2", "wcgr3", \ |
71 "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ | 75 "cc", "vfpcc", "sfp", "afp" \ |
72 "s24", "s25", "s26", "s27", "s28", "s29", "s30", "s31", \ | |
73 "d16", "?16", "d17", "?17", "d18", "?18", "d19", "?19", \ | |
74 "d20", "?20", "d21", "?21", "d22", "?22", "d23", "?23", \ | |
75 "d24", "?24", "d25", "?25", "d26", "?26", "d27", "?27", \ | |
76 "d28", "?28", "d29", "?29", "d30", "?30", "d31", "?31", \ | |
77 "vfpcc" \ | |
78 } | 76 } |
79 #endif | 77 #endif |
80 | 78 |
81 #ifndef ADDITIONAL_REGISTER_NAMES | 79 #ifndef ADDITIONAL_REGISTER_NAMES |
82 #define ADDITIONAL_REGISTER_NAMES \ | 80 #define ADDITIONAL_REGISTER_NAMES \ |
89 {"v2", 5}, \ | 87 {"v2", 5}, \ |
90 {"v3", 6}, \ | 88 {"v3", 6}, \ |
91 {"v4", 7}, \ | 89 {"v4", 7}, \ |
92 {"v5", 8}, \ | 90 {"v5", 8}, \ |
93 {"v6", 9}, \ | 91 {"v6", 9}, \ |
94 {"rfp", 9}, /* Gcc used to call it this */ \ | 92 {"rfp", 9}, /* Historical. */ \ |
95 {"sb", 9}, \ | 93 {"sb", 9}, /* Historical. */ \ |
96 {"v7", 10}, \ | 94 {"v7", 10}, \ |
97 {"r10", 10}, /* sl */ \ | 95 {"sl", 10}, /* Historical. */ \ |
98 {"r11", 11}, /* fp */ \ | 96 {"r11", 11}, /* fp */ \ |
99 {"r12", 12}, /* ip */ \ | 97 {"r12", 12}, /* ip */ \ |
100 {"r13", 13}, /* sp */ \ | 98 {"r13", 13}, /* sp */ \ |
101 {"r14", 14}, /* lr */ \ | 99 {"r14", 14}, /* lr */ \ |
102 {"r15", 15}, /* pc */ \ | 100 {"r15", 15} /* pc */ \ |
103 {"mvf0", 27}, \ | |
104 {"mvf1", 28}, \ | |
105 {"mvf2", 29}, \ | |
106 {"mvf3", 30}, \ | |
107 {"mvf4", 31}, \ | |
108 {"mvf5", 32}, \ | |
109 {"mvf6", 33}, \ | |
110 {"mvf7", 34}, \ | |
111 {"mvf8", 35}, \ | |
112 {"mvf9", 36}, \ | |
113 {"mvf10", 37}, \ | |
114 {"mvf11", 38}, \ | |
115 {"mvf12", 39}, \ | |
116 {"mvf13", 40}, \ | |
117 {"mvf14", 41}, \ | |
118 {"mvf15", 42}, \ | |
119 {"mvd0", 27}, \ | |
120 {"mvd1", 28}, \ | |
121 {"mvd2", 29}, \ | |
122 {"mvd3", 30}, \ | |
123 {"mvd4", 31}, \ | |
124 {"mvd5", 32}, \ | |
125 {"mvd6", 33}, \ | |
126 {"mvd7", 34}, \ | |
127 {"mvd8", 35}, \ | |
128 {"mvd9", 36}, \ | |
129 {"mvd10", 37}, \ | |
130 {"mvd11", 38}, \ | |
131 {"mvd12", 39}, \ | |
132 {"mvd13", 40}, \ | |
133 {"mvd14", 41}, \ | |
134 {"mvd15", 42}, \ | |
135 {"mvfx0", 27}, \ | |
136 {"mvfx1", 28}, \ | |
137 {"mvfx2", 29}, \ | |
138 {"mvfx3", 30}, \ | |
139 {"mvfx4", 31}, \ | |
140 {"mvfx5", 32}, \ | |
141 {"mvfx6", 33}, \ | |
142 {"mvfx7", 34}, \ | |
143 {"mvfx8", 35}, \ | |
144 {"mvfx9", 36}, \ | |
145 {"mvfx10", 37}, \ | |
146 {"mvfx11", 38}, \ | |
147 {"mvfx12", 39}, \ | |
148 {"mvfx13", 40}, \ | |
149 {"mvfx14", 41}, \ | |
150 {"mvfx15", 42}, \ | |
151 {"mvdx0", 27}, \ | |
152 {"mvdx1", 28}, \ | |
153 {"mvdx2", 29}, \ | |
154 {"mvdx3", 30}, \ | |
155 {"mvdx4", 31}, \ | |
156 {"mvdx5", 32}, \ | |
157 {"mvdx6", 33}, \ | |
158 {"mvdx7", 34}, \ | |
159 {"mvdx8", 35}, \ | |
160 {"mvdx9", 36}, \ | |
161 {"mvdx10", 37}, \ | |
162 {"mvdx11", 38}, \ | |
163 {"mvdx12", 39}, \ | |
164 {"mvdx13", 40}, \ | |
165 {"mvdx14", 41}, \ | |
166 {"mvdx15", 42} \ | |
167 } | 101 } |
168 #endif | 102 #endif |
169 | 103 |
170 #ifndef OVERLAPPING_REGISTER_NAMES | 104 #ifndef OVERLAPPING_REGISTER_NAMES |
171 #define OVERLAPPING_REGISTER_NAMES \ | 105 #define OVERLAPPING_REGISTER_NAMES \ |
172 { \ | 106 { \ |
173 {"d0", 63, 2}, \ | 107 {"d0", FIRST_VFP_REGNUM + 0, 2}, \ |
174 {"d1", 65, 2}, \ | 108 {"d1", FIRST_VFP_REGNUM + 2, 2}, \ |
175 {"d2", 67, 2}, \ | 109 {"d2", FIRST_VFP_REGNUM + 4, 2}, \ |
176 {"d3", 69, 2}, \ | 110 {"d3", FIRST_VFP_REGNUM + 6, 2}, \ |
177 {"d4", 71, 2}, \ | 111 {"d4", FIRST_VFP_REGNUM + 8, 2}, \ |
178 {"d5", 73, 2}, \ | 112 {"d5", FIRST_VFP_REGNUM + 10, 2}, \ |
179 {"d6", 75, 2}, \ | 113 {"d6", FIRST_VFP_REGNUM + 12, 2}, \ |
180 {"d7", 77, 2}, \ | 114 {"d7", FIRST_VFP_REGNUM + 14, 2}, \ |
181 {"d8", 79, 2}, \ | 115 {"d8", FIRST_VFP_REGNUM + 16, 2}, \ |
182 {"d9", 81, 2}, \ | 116 {"d9", FIRST_VFP_REGNUM + 18, 2}, \ |
183 {"d10", 83, 2}, \ | 117 {"d10", FIRST_VFP_REGNUM + 20, 2}, \ |
184 {"d11", 85, 2}, \ | 118 {"d11", FIRST_VFP_REGNUM + 22, 2}, \ |
185 {"d12", 87, 2}, \ | 119 {"d12", FIRST_VFP_REGNUM + 24, 2}, \ |
186 {"d13", 89, 2}, \ | 120 {"d13", FIRST_VFP_REGNUM + 26, 2}, \ |
187 {"d14", 91, 2}, \ | 121 {"d14", FIRST_VFP_REGNUM + 28, 2}, \ |
188 {"d15", 93, 2}, \ | 122 {"d15", FIRST_VFP_REGNUM + 30, 2}, \ |
189 {"q0", 63, 4}, \ | 123 {"q0", FIRST_VFP_REGNUM + 0, 4}, \ |
190 {"q1", 67, 4}, \ | 124 {"q1", FIRST_VFP_REGNUM + 4, 4}, \ |
191 {"q2", 71, 4}, \ | 125 {"q2", FIRST_VFP_REGNUM + 8, 4}, \ |
192 {"q3", 75, 4}, \ | 126 {"q3", FIRST_VFP_REGNUM + 12, 4}, \ |
193 {"q4", 79, 4}, \ | 127 {"q4", FIRST_VFP_REGNUM + 16, 4}, \ |
194 {"q5", 83, 4}, \ | 128 {"q5", FIRST_VFP_REGNUM + 20, 4}, \ |
195 {"q6", 87, 4}, \ | 129 {"q6", FIRST_VFP_REGNUM + 24, 4}, \ |
196 {"q7", 91, 4}, \ | 130 {"q7", FIRST_VFP_REGNUM + 28, 4}, \ |
197 {"q8", 95, 4}, \ | 131 {"q8", FIRST_VFP_REGNUM + 32, 4}, \ |
198 {"q9", 99, 4}, \ | 132 {"q9", FIRST_VFP_REGNUM + 36, 4}, \ |
199 {"q10", 103, 4}, \ | 133 {"q10", FIRST_VFP_REGNUM + 40, 4}, \ |
200 {"q11", 107, 4}, \ | 134 {"q11", FIRST_VFP_REGNUM + 44, 4}, \ |
201 {"q12", 111, 4}, \ | 135 {"q12", FIRST_VFP_REGNUM + 48, 4}, \ |
202 {"q13", 115, 4}, \ | 136 {"q13", FIRST_VFP_REGNUM + 52, 4}, \ |
203 {"q14", 119, 4}, \ | 137 {"q14", FIRST_VFP_REGNUM + 56, 4}, \ |
204 {"q15", 123, 4} \ | 138 {"q15", FIRST_VFP_REGNUM + 60, 4} \ |
205 } | 139 } |
206 #endif | 140 #endif |
207 | 141 |
208 #ifndef NO_DOLLAR_IN_LABEL | 142 #ifndef NO_DOLLAR_IN_LABEL |
209 #define NO_DOLLAR_IN_LABEL 1 | 143 #define NO_DOLLAR_IN_LABEL 1 |
260 { \ | 194 { \ |
261 if (flag_pic || optimize_size) \ | 195 if (flag_pic || optimize_size) \ |
262 { \ | 196 { \ |
263 switch (GET_MODE(body)) \ | 197 switch (GET_MODE(body)) \ |
264 { \ | 198 { \ |
265 case QImode: \ | 199 case E_QImode: \ |
266 asm_fprintf (STREAM, "\t.byte\t(%LL%d-%LL%d)/2\n", \ | 200 asm_fprintf (STREAM, "\t.byte\t(%LL%d-%LL%d)/2\n", \ |
267 VALUE, REL); \ | 201 VALUE, REL); \ |
268 break; \ | 202 break; \ |
269 case HImode: /* TBH */ \ | 203 case E_HImode: /* TBH */ \ |
270 asm_fprintf (STREAM, "\t.2byte\t(%LL%d-%LL%d)/2\n", \ | 204 asm_fprintf (STREAM, "\t.2byte\t(%LL%d-%LL%d)/2\n", \ |
271 VALUE, REL); \ | 205 VALUE, REL); \ |
272 break; \ | 206 break; \ |
273 case SImode: \ | 207 case E_SImode: \ |
274 asm_fprintf (STREAM, "\t.word\t%LL%d-%LL%d\n", \ | 208 asm_fprintf (STREAM, "\t.word\t%LL%d-%LL%d\n", \ |
275 VALUE, REL); \ | 209 VALUE, REL); \ |
276 break; \ | 210 break; \ |
277 default: \ | 211 default: \ |
278 gcc_unreachable(); \ | 212 gcc_unreachable(); \ |
283 } \ | 217 } \ |
284 else /* Thumb-2 */ \ | 218 else /* Thumb-2 */ \ |
285 { \ | 219 { \ |
286 switch (GET_MODE(body)) \ | 220 switch (GET_MODE(body)) \ |
287 { \ | 221 { \ |
288 case QImode: /* TBB */ \ | 222 case E_QImode: /* TBB */ \ |
289 asm_fprintf (STREAM, "\t.byte\t(%LL%d-%LL%d)/2\n", \ | 223 asm_fprintf (STREAM, "\t.byte\t(%LL%d-%LL%d)/2\n", \ |
290 VALUE, REL); \ | 224 VALUE, REL); \ |
291 break; \ | 225 break; \ |
292 case HImode: /* TBH */ \ | 226 case E_HImode: /* TBH */ \ |
293 asm_fprintf (STREAM, "\t.2byte\t(%LL%d-%LL%d)/2\n", \ | 227 asm_fprintf (STREAM, "\t.2byte\t(%LL%d-%LL%d)/2\n", \ |
294 VALUE, REL); \ | 228 VALUE, REL); \ |
295 break; \ | 229 break; \ |
296 case SImode: \ | 230 case E_SImode: \ |
297 if (flag_pic) \ | 231 if (flag_pic) \ |
298 asm_fprintf (STREAM, "\t.word\t%LL%d+1-%LL%d\n", VALUE, REL); \ | 232 asm_fprintf (STREAM, "\t.word\t%LL%d+1-%LL%d\n", VALUE, REL); \ |
299 else \ | 233 else \ |
300 asm_fprintf (STREAM, "\t.word\t%LL%d+1\n", VALUE); \ | 234 asm_fprintf (STREAM, "\t.word\t%LL%d+1\n", VALUE); \ |
301 break; \ | 235 break; \ |
364 #ifndef ASM_OUTPUT_ALIGNED_BSS | 298 #ifndef ASM_OUTPUT_ALIGNED_BSS |
365 #define ASM_OUTPUT_ALIGNED_BSS(STREAM, DECL, NAME, SIZE, ALIGN) \ | 299 #define ASM_OUTPUT_ALIGNED_BSS(STREAM, DECL, NAME, SIZE, ALIGN) \ |
366 asm_output_aligned_bss (STREAM, DECL, NAME, SIZE, ALIGN) | 300 asm_output_aligned_bss (STREAM, DECL, NAME, SIZE, ALIGN) |
367 #endif | 301 #endif |
368 | 302 |
369 /* Output a #ident directive. */ | |
370 #ifndef ASM_OUTPUT_IDENT | |
371 #define ASM_OUTPUT_IDENT(STREAM,STRING) \ | |
372 asm_fprintf (STREAM, "%@ - - - ident %s\n", STRING) | |
373 #endif | |
374 | |
375 #ifndef ASM_COMMENT_START | 303 #ifndef ASM_COMMENT_START |
376 #define ASM_COMMENT_START "@" | 304 #define ASM_COMMENT_START "@" |
377 #endif | 305 #endif |
378 | 306 |
379 /* This works for GAS and some other assemblers. */ | 307 /* This works for GAS and some other assemblers. */ |