OLD | NEW |
1 /* Definitions for Motorola 68k running Linux-based GNU systems with | 1 /* Definitions for Motorola 68k running Linux-based GNU systems with |
2 ELF format. | 2 ELF format. |
3 Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2006, | 3 Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2006, |
4 2007 Free Software Foundation, Inc. | 4 2007, 2009 Free Software Foundation, Inc. |
5 | 5 |
6 This file is part of GCC. | 6 This file is part of GCC. |
7 | 7 |
8 GCC is free software; you can redistribute it and/or modify | 8 GCC is free software; you can redistribute it and/or modify |
9 it under the terms of the GNU General Public License as published by | 9 it under the terms of the GNU General Public License as published by |
10 the Free Software Foundation; either version 3, or (at your option) | 10 the Free Software Foundation; either version 3, or (at your option) |
11 any later version. | 11 any later version. |
12 | 12 |
13 GCC is distributed in the hope that it will be useful, | 13 GCC is distributed in the hope that it will be useful, |
14 but WITHOUT ANY WARRANTY; without even the implied warranty of | 14 but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 } while (0) | 119 } while (0) |
120 | 120 |
121 /* This is how to output an assembler line that says to advance the | 121 /* This is how to output an assembler line that says to advance the |
122 location counter to a multiple of 2**LOG bytes. */ | 122 location counter to a multiple of 2**LOG bytes. */ |
123 | 123 |
124 #undef ASM_OUTPUT_ALIGN | 124 #undef ASM_OUTPUT_ALIGN |
125 #define ASM_OUTPUT_ALIGN(FILE,LOG) \ | 125 #define ASM_OUTPUT_ALIGN(FILE,LOG) \ |
126 if ((LOG) > 0) \ | 126 if ((LOG) > 0) \ |
127 fprintf ((FILE), "%s%u\n", ALIGN_ASM_OP, 1 << (LOG)); | 127 fprintf ((FILE), "%s%u\n", ALIGN_ASM_OP, 1 << (LOG)); |
128 | 128 |
129 #ifdef HAVE_GAS_BALIGN_AND_P2ALIGN | |
130 /* Use "move.l %a4,%a4" to advance within code. */ | |
131 #define ASM_OUTPUT_ALIGN_WITH_NOP(FILE,LOG) \ | |
132 if ((LOG) > 0) \ | |
133 fprintf ((FILE), "\t.balignw %u,0x284c\n", 1 << (LOG)); | |
134 #endif | |
135 | |
136 /* If defined, a C expression whose value is a string containing the | 129 /* If defined, a C expression whose value is a string containing the |
137 assembler operation to identify the following data as uninitialized global | 130 assembler operation to identify the following data as uninitialized global |
138 data. */ | 131 data. */ |
139 | 132 |
140 #define BSS_SECTION_ASM_OP "\t.section\t.bss" | 133 #define BSS_SECTION_ASM_OP "\t.section\t.bss" |
141 | 134 |
142 /* A C statement (sans semicolon) to output to the stdio stream | 135 /* A C statement (sans semicolon) to output to the stdio stream |
143 FILE the assembler definition of uninitialized global DECL named | 136 FILE the assembler definition of uninitialized global DECL named |
144 NAME whose size is SIZE bytes and alignment is ALIGN bytes. | 137 NAME whose size is SIZE bytes and alignment is ALIGN bytes. |
145 Try to use asm_output_aligned_bss to implement this macro. */ | 138 Try to use asm_output_aligned_bss to implement this macro. */ |
146 | 139 |
147 #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \ | 140 #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \ |
148 asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN) | 141 asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN) |
149 | 142 |
150 /* Output assembler code to FILE to increment profiler label # LABELNO | 143 /* Output assembler code to FILE to increment profiler label # LABELNO |
151 for profiling a function entry. */ | 144 for profiling a function entry. */ |
152 | 145 #define NO_PROFILE_COUNTERS 1 |
153 #undef FUNCTION_PROFILER | 146 #undef FUNCTION_PROFILER |
154 #define FUNCTION_PROFILER(FILE, LABELNO) \ | 147 #define FUNCTION_PROFILER(FILE, LABELNO) \ |
155 { \ | 148 { \ |
156 asm_fprintf (FILE, "\tlea (%LLP%d,%Rpc),%Ra1\n", (LABELNO)); \ | |
157 if (flag_pic) \ | 149 if (flag_pic) \ |
158 fprintf (FILE, "\tbsr.l _mcount@PLTPC\n"); \ | 150 fprintf (FILE, "\tbsr.l _mcount@PLTPC\n"); \ |
159 else \ | 151 else \ |
160 fprintf (FILE, "\tjbsr _mcount\n"); \ | 152 fprintf (FILE, "\tjbsr _mcount\n"); \ |
161 } | 153 } |
162 | 154 |
163 /* Do not break .stabs pseudos into continuations. */ | 155 /* Do not break .stabs pseudos into continuations. */ |
164 | 156 |
165 #define DBX_CONTIN_LENGTH 0 | 157 #define DBX_CONTIN_LENGTH 0 |
166 | 158 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 /* For m68k SVR4, structures are returned using the reentrant | 194 /* For m68k SVR4, structures are returned using the reentrant |
203 technique. */ | 195 technique. */ |
204 #undef PCC_STATIC_STRUCT_RETURN | 196 #undef PCC_STATIC_STRUCT_RETURN |
205 #define DEFAULT_PCC_STRUCT_RETURN 0 | 197 #define DEFAULT_PCC_STRUCT_RETURN 0 |
206 | 198 |
207 /* Finalize the trampoline by flushing the insn cache. */ | 199 /* Finalize the trampoline by flushing the insn cache. */ |
208 | 200 |
209 #undef FINALIZE_TRAMPOLINE | 201 #undef FINALIZE_TRAMPOLINE |
210 #define FINALIZE_TRAMPOLINE(TRAMP) \ | 202 #define FINALIZE_TRAMPOLINE(TRAMP) \ |
211 emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__clear_cache"), \ | 203 emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__clear_cache"), \ |
212 » » 0, VOIDmode, 2, TRAMP, Pmode,» » » \ | 204 » » LCT_NORMAL, VOIDmode, 2, TRAMP, Pmode,» » \ |
213 plus_constant (TRAMP, TRAMPOLINE_SIZE), Pmode); | 205 plus_constant (TRAMP, TRAMPOLINE_SIZE), Pmode); |
214 | 206 |
215 /* Clear the instruction cache from `beg' to `end'. This makes an | 207 /* Clear the instruction cache from `beg' to `end'. This makes an |
216 inline system call to SYS_cacheflush. The arguments are as | 208 inline system call to SYS_cacheflush. The arguments are as |
217 follows: | 209 follows: |
218 | 210 |
219 cacheflush (addr, scope, cache, len) | 211 cacheflush (addr, scope, cache, len) |
220 | 212 |
221 addr - the start address for the flush | 213 addr - the start address for the flush |
222 scope - the scope of the flush (see the cpush insn) | 214 scope - the scope of the flush (see the cpush insn) |
(...skipping 12 matching lines...) Expand all Loading... |
235 "move%.l #3, %/d3\n\t" /* insn+data caches */ \ | 227 "move%.l #3, %/d3\n\t" /* insn+data caches */ \ |
236 "trap #0" \ | 228 "trap #0" \ |
237 : /* no outputs */ \ | 229 : /* no outputs */ \ |
238 : "d" (_beg), "d" (_len) \ | 230 : "d" (_beg), "d" (_len) \ |
239 : "%d0", "%d2", "%d3"); \ | 231 : "%d0", "%d2", "%d3"); \ |
240 } | 232 } |
241 | 233 |
242 #define TARGET_ASM_FILE_END file_end_indicate_exec_stack | 234 #define TARGET_ASM_FILE_END file_end_indicate_exec_stack |
243 | 235 |
244 #define MD_UNWIND_SUPPORT "config/m68k/linux-unwind.h" | 236 #define MD_UNWIND_SUPPORT "config/m68k/linux-unwind.h" |
OLD | NEW |