]> gcc.gnu.org Git - gcc.git/blame - gcc/config/m68k/3b1.h
chorus.h: Consistently define *_DEBUGGING_INFO with the value 1.
[gcc.git] / gcc / config / m68k / 3b1.h
CommitLineData
941d35a7
RS
1/* Definitions of target machine for GNU compiler.
2 AT&T UNIX PC version (pc7300, 3b1)
016c8440 3 Copyright (C) 1987, 1993, 1996, 1999, 2000 Free Software Foundation, Inc.
66dae892 4 Contributed by Alex Crain (alex@umbc3.umd.edu).
941d35a7
RS
5
6This file is part of GNU CC.
7
8GNU CC is free software; you can redistribute it and/or modify
9it under the terms of the GNU General Public License as published by
10the Free Software Foundation; either version 2, or (at your option)
11any later version.
12
13GNU CC is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
19along with GNU CC; see the file COPYING. If not, write to
5129e171 20the Free Software Foundation, 59 Temple Place - Suite 330,
17337c4a 21Boston, MA 02111-1307, USA. */
941d35a7 22
941d35a7
RS
23#define SGS_SWITCH_TABLES /* Different switch table handling */
24
57e51b0e 25#include "m68k/hp320.h"
941d35a7
RS
26
27/* See m68k.h. 0 means 680[01]0 with no 68881. */
28
29#undef TARGET_DEFAULT
30#define TARGET_DEFAULT 0
31
92e6e51e
RS
32/* Don't try using XFmode. */
33#undef LONG_DOUBLE_TYPE_SIZE
34#define LONG_DOUBLE_TYPE_SIZE 64
35
941d35a7
RS
36/* -m68020 requires special flags to the assembler. */
37
38#undef ASM_SPEC
39#define ASM_SPEC "%{m68020:-68020}%{!m68020:-68010} %{m68881:-68881}"
40
41/* we use /lib/libp/lib* when profiling */
42
43#undef LIB_SPEC
44#define LIB_SPEC "%{!shlib:%{p:-L/lib/libp} %{pg:-L/lib/libp} -lc}"
45
46/* shared libraries need to use crt0s.o */
47
48#undef STARTFILE_SPEC
49#define STARTFILE_SPEC \
50 "%{!shlib:%{pg:mcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}}\
51 %{shlib:crt0s.o%s shlib.ifile%s} "
52
941d35a7
RS
53/* Make output for SDB. */
54
23532de9 55#define SDB_DEBUGGING_INFO 1
941d35a7
RS
56
57/* The .file command should always begin the output. */
58
59#undef ASM_FILE_START
60#define ASM_FILE_START(FILE) \
61output_file_directive ((FILE), main_input_filename)
62
941d35a7
RS
63/* Define __HAVE_68881__ in preprocessor if -m68881 is specified.
64 This will control the use of inline 68881 insns in certain macros. */
65
66#undef CPP_SPEC
67#define CPP_SPEC "%{m68881:-D__HAVE_68881__}"
68
69/* Names to predefine in the preprocessor for this target machine. */
70/* ihnp4!lmayk!lgm@eddie.mit.edu says mc68000 and m68k should not be here. */
71
72#undef CPP_PREDEFINES
2b57e919 73#define CPP_PREDEFINES "-Dmc68k -Dunix -Dunixpc -D__motorola__ -Asystem=unix -Asystem=svr3 -Acpu=m68k -Amachine=m68k"
941d35a7
RS
74
75#undef REGISTER_NAMES
76#define REGISTER_NAMES \
77{"%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7", \
78 "%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%fp", "%sp", \
79 "%f0", "%f1", "%f2", "%f3", "%f4", "%f5", "%f6", "%f7"}
80
81/* Specify how to pad function arguments.
82 Value should be `upward', `downward' or `none'.
83 Same as the default, except no padding for large or variable-size args. */
84
85#define FUNCTION_ARG_PADDING(MODE, TYPE) \
86 (((MODE) == BLKmode \
87 ? ((TYPE) && TREE_CODE (TYPE_SIZE (TYPE)) == INTEGER_CST \
88 && int_size_in_bytes (TYPE) < PARM_BOUNDARY / BITS_PER_UNIT) \
89 : GET_MODE_BITSIZE (MODE) < PARM_BOUNDARY) \
90 ? downward : none)
91
0310ba22
RS
92/* The 3b1 does not have `atexit'. */
93
c063dc98 94#define NEED_ATEXIT
0310ba22 95
941d35a7
RS
96/* Override parts of m68k.h to fit the SGS-3b1 assembler. */
97
98#undef TARGET_VERSION
99#undef ASM_FORMAT_PRIVATE_NAME
941d35a7
RS
100#undef ASM_OUTPUT_ALIGN
101#undef ASM_OUTPUT_SOURCE_FILENAME
102#undef ASM_OUTPUT_SOURCE_LINE
103#undef PRINT_OPERAND_ADDRESS
104#undef ASM_GENERATE_INTERNAL_LABEL
105#undef FUNCTION_PROFILER
106#undef ASM_OUTPUT_ADDR_VEC_ELT
107#undef ASM_OUTPUT_ADDR_DIFF_ELT
108#undef ASM_OUTPUT_INTERNAL_LABEL
109#undef ASM_OUTPUT_OPCODE
110#undef ASM_OUTPUT_LOCAL
66dae892 111#undef USER_LABEL_PREFIX
941d35a7
RS
112#undef ASM_OUTPUT_ASCII
113
114#define TARGET_VERSION fprintf (stderr, " (68k, SGS/AT&T unixpc syntax)");
115
116/* Store in OUTPUT a string (made with alloca) containing
117 an assembler-name for a local static variable named NAME.
118 LABELNO is an integer which is different for each call. */
119
120#define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \
121( (OUTPUT) = (char *) alloca (strlen ((NAME)) + 12), \
122 sprintf ((OUTPUT), "%s_%%%d", (NAME), (LABELNO)))
123
941d35a7 124#define ASM_OUTPUT_ALIGN(FILE,LOG) \
046b71ed 125do { \
941d35a7
RS
126 if ((LOG) == 1) \
127 fprintf (FILE, "\teven\n"); \
128 else if ((LOG) != 0) \
046b71ed
KG
129 abort (); \
130} while (0)
941d35a7
RS
131
132/* This is how to output an assembler line
133 that says to advance the location counter by SIZE bytes. */
134
135#undef ASM_OUTPUT_SKIP
136#define ASM_OUTPUT_SKIP(FILE,SIZE) \
137 fprintf (FILE, "\tspace %d\n", (SIZE))
138
139/* Can't use ASM_OUTPUT_SKIP in text section; it doesn't leave 0s. */
140
141#define ASM_NO_SKIP_IN_TEXT 1
142
7a1929e1 143/* The beginnings of sdb support... */
941d35a7
RS
144
145#define ASM_OUTPUT_SOURCE_FILENAME(FILE, FILENAME) \
f40176b1
PE
146 do { fprintf (FILE, "\tfile\t"); \
147 output_quoted_string (FILE, FILENAME); \
148 fprintf (FILE, "\n"); \
149 } while (0)
941d35a7
RS
150
151#define ASM_OUTPUT_SOURCE_LINE(FILE, LINENO) \
152 fprintf (FILE, "\tln\t%d\n", \
153 (sdb_begin_function_line \
da905677 154 ? (LINENO) - sdb_begin_function_line : 1))
941d35a7 155
7a1929e1 156/* Yet another null terminated string format. */
941d35a7
RS
157
158#define ASM_OUTPUT_ASCII(FILE,PTR,LEN) \
9d955c3a 159 do { register size_t sp = 0, lp = 0, limit = (LEN); \
941d35a7
RS
160 fprintf ((FILE), "\tbyte\t"); \
161 loop: \
162 if ((PTR)[sp] > ' ' && ! ((PTR)[sp] & 0x80) && (PTR)[sp] != '\\') \
163 { lp += 3; \
164 fprintf ((FILE), "'%c", (PTR)[sp]); } \
165 else \
166 { lp += 5; \
167 fprintf ((FILE), "0x%x", (PTR)[sp]); } \
9d955c3a 168 if (++sp < limit) \
941d35a7
RS
169 { if (lp > 60) \
170 { lp = 0; \
016c8440 171 fprintf ((FILE), "\n%s", ASCII_DATA_ASM_OP); } \
941d35a7
RS
172 else \
173 putc (',', (FILE)); \
174 goto loop; } \
9e269f72 175 putc ('\n', (FILE)); } while (0)
941d35a7
RS
176
177/* Note that in the case of the movhi which fetches an element of
178 an ADDR_DIFF_VEC the offset output is too large by 2.
179 This is because the 3b1 assembler refuses to subtract 2.
180 ASM_OUTPUT_CASE_LABEL, below, compensates for this. */
181
182#define PRINT_OPERAND_ADDRESS(FILE, ADDR) \
183{ register rtx reg1, reg2, breg, ireg; \
184 register rtx addr = ADDR; \
185 rtx offset; \
186 switch (GET_CODE (addr)) \
187 { \
188 case REG: \
189 fprintf (FILE, "(%s)", reg_names[REGNO (addr)]); \
190 break; \
191 case PRE_DEC: \
192 fprintf (FILE, "-(%s)", reg_names[REGNO (XEXP (addr, 0))]); \
193 break; \
194 case POST_INC: \
195 fprintf (FILE, "(%s)+", reg_names[REGNO (XEXP (addr, 0))]); \
196 break; \
197 case PLUS: \
198 reg1 = 0; reg2 = 0; \
199 ireg = 0; breg = 0; \
200 offset = 0; \
201 if (CONSTANT_ADDRESS_P (XEXP (addr, 0))) \
202 { \
203 offset = XEXP (addr, 0); \
204 addr = XEXP (addr, 1); \
205 } \
206 else if (CONSTANT_ADDRESS_P (XEXP (addr, 1))) \
207 { \
208 offset = XEXP (addr, 1); \
209 addr = XEXP (addr, 0); \
210 } \
211 if (GET_CODE (addr) != PLUS) ; \
212 else if (GET_CODE (XEXP (addr, 0)) == SIGN_EXTEND) \
213 { \
214 reg1 = XEXP (addr, 0); \
215 addr = XEXP (addr, 1); \
216 } \
217 else if (GET_CODE (XEXP (addr, 1)) == SIGN_EXTEND) \
218 { \
219 reg1 = XEXP (addr, 1); \
220 addr = XEXP (addr, 0); \
221 } \
222 else if (GET_CODE (XEXP (addr, 0)) == MULT) \
223 { \
224 reg1 = XEXP (addr, 0); \
225 addr = XEXP (addr, 1); \
226 } \
227 else if (GET_CODE (XEXP (addr, 1)) == MULT) \
228 { \
229 reg1 = XEXP (addr, 1); \
230 addr = XEXP (addr, 0); \
231 } \
232 else if (GET_CODE (XEXP (addr, 0)) == REG) \
233 { \
234 reg1 = XEXP (addr, 0); \
235 addr = XEXP (addr, 1); \
236 } \
237 else if (GET_CODE (XEXP (addr, 1)) == REG) \
238 { \
239 reg1 = XEXP (addr, 1); \
240 addr = XEXP (addr, 0); \
241 } \
242 if (GET_CODE (addr) == REG || GET_CODE (addr) == MULT \
243 || GET_CODE (addr) == SIGN_EXTEND) \
244 { if (reg1 == 0) reg1 = addr; else reg2 = addr; addr = 0; } \
245/* for OLD_INDEXING \
246 else if (GET_CODE (addr) == PLUS) \
247 { \
248 if (GET_CODE (XEXP (addr, 0)) == REG) \
249 { \
250 reg2 = XEXP (addr, 0); \
251 addr = XEXP (addr, 1); \
252 } \
253 else if (GET_CODE (XEXP (addr, 1)) == REG) \
254 { \
255 reg2 = XEXP (addr, 1); \
256 addr = XEXP (addr, 0); \
257 } \
258 } \
259 */ \
260 if (offset != 0) { if (addr != 0) abort (); addr = offset; } \
261 if ((reg1 && (GET_CODE (reg1) == SIGN_EXTEND \
262 || GET_CODE (reg1) == MULT)) \
263 || (reg2 != 0 && REGNO_OK_FOR_BASE_P (REGNO (reg2)))) \
264 { breg = reg2; ireg = reg1; } \
265 else if (reg1 != 0 && REGNO_OK_FOR_BASE_P (REGNO (reg1))) \
266 { breg = reg1; ireg = reg2; } \
267 if (ireg != 0 && breg == 0 && GET_CODE (addr) == LABEL_REF) \
268 { int scale = 1; \
269 if (GET_CODE (ireg) == MULT) \
270 { scale = INTVAL (XEXP (ireg, 1)); \
271 ireg = XEXP (ireg, 0); } \
272 if (GET_CODE (ireg) == SIGN_EXTEND) \
273 fprintf (FILE, "LD%%%d(%%pc,%s.w", \
274 CODE_LABEL_NUMBER (XEXP (addr, 0)), \
275 reg_names[REGNO (XEXP (ireg, 0))]); \
276 else \
277 fprintf (FILE, "LD%%%d(%%pc,%s.l", \
278 CODE_LABEL_NUMBER (XEXP (addr, 0)), \
279 reg_names[REGNO (ireg)]); \
280 if (scale != 1) fprintf (FILE, "*%d", scale); \
281 fprintf (FILE, ")"); \
282 break; } \
283 if (breg != 0 && ireg == 0 && GET_CODE (addr) == LABEL_REF) \
284 { fprintf (FILE, "LD%%%d(%%pc,%s.l", \
285 CODE_LABEL_NUMBER (XEXP (addr, 0)), \
286 reg_names[REGNO (breg)]); \
287 putc (')', FILE); \
288 break; } \
289 if (ireg != 0 || breg != 0) \
290 { int scale = 1; \
291 if (breg == 0) \
292 abort (); \
293 if (addr != 0) \
294 output_addr_const (FILE, addr); \
295 fprintf (FILE, "(%s", reg_names[REGNO (breg)]); \
296 if (ireg != 0) \
297 putc (',', FILE); \
298 if (ireg != 0 && GET_CODE (ireg) == MULT) \
299 { scale = INTVAL (XEXP (ireg, 1)); \
300 ireg = XEXP (ireg, 0); } \
301 if (ireg != 0 && GET_CODE (ireg) == SIGN_EXTEND) \
302 fprintf (FILE, "%s.w", reg_names[REGNO (XEXP (ireg, 0))]); \
303 else if (ireg != 0) \
304 fprintf (FILE, "%s.l", reg_names[REGNO (ireg)]); \
305 if (scale != 1) fprintf (FILE, "*%d", scale); \
306 putc (')', FILE); \
307 break; \
308 } \
309 else if (reg1 != 0 && GET_CODE (addr) == LABEL_REF) \
310 { fprintf (FILE, "LD%%%d(%%pc,%s.w)", \
311 CODE_LABEL_NUMBER (XEXP (addr, 0)), \
312 reg_names[REGNO (reg1)]); \
313 break; } \
314 default: \
315 if (GET_CODE (addr) == CONST_INT \
316 && INTVAL (addr) < 0x8000 \
317 && INTVAL (addr) >= -0x8000) \
318 fprintf (FILE, "%d", INTVAL (addr)); \
319 else \
320 output_addr_const (FILE, addr); \
321 }}
322
323#define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM) \
e59f7d3d 324 sprintf ((LABEL), "%s%%%ld", (PREFIX), (long)(NUM))
941d35a7
RS
325
326#define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM) \
327 fprintf (FILE, "%s%%%d:\n", PREFIX, NUM)
328
329/* Must put address in %a0 , not %d0 . -- LGM, 7/15/88 */
330#define FUNCTION_PROFILER(FILE, LABEL_NO) \
331 fprintf (FILE, "\tmov.l &LP%%%d,%%a0\n\tjsr mcount\n", (LABEL_NO))
332
333#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \
334 fprintf (FILE, "\tlong L%%%d\n", (VALUE))
335
33f7f353 336#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
941d35a7
RS
337 fprintf (FILE, "\tshort L%%%d-L%%%d\n", (VALUE), (REL))
338
339/* ihnp4!lmayk!lgm says that `short 0' triggers assembler bug;
340 `short L%nn-L%nn' supposedly works. */
341#define ASM_OUTPUT_CASE_LABEL(FILE,PREFIX,NUM,TABLE) \
342 if (! RTX_INTEGRATED_P (TABLE)) \
343 fprintf (FILE, "\tswbeg &%d\n%s%%%d:\n", \
344 XVECLEN (PATTERN (TABLE), 1), (PREFIX), (NUM)); \
345 else \
346 fprintf (FILE, "\tswbeg &%d\n%s%%%d:\n\tshort %s%%%d-%s%%%d\n", \
347 XVECLEN (PATTERN (TABLE), 1) + 1, (PREFIX), (NUM), \
348 (PREFIX), (NUM), (PREFIX), (NUM))
349
fc3ffe83
RK
350/* At end of a switch table, define LDnnn iff the symbol LInnn was defined.
351 Some SGS assemblers have a bug such that "Lnnn-LInnn-2.b(pc,d0.l*2)"
352 fails to assemble. Luckily "LDnnn(pc,d0.l*2)" produces the results
353 we want. This difference can be accommodated by making the assembler
354 define such "LDnnn" to be either "Lnnn-LInnn-2.b", "Lnnn", or any other
355 string, as necessary. This is accomplished via the ASM_OUTPUT_CASE_END
7a1929e1 356 macro. */
fc3ffe83
RK
357
358#define ASM_OUTPUT_CASE_END(FILE,NUM,TABLE) \
359{ if (switch_table_difference_label_flag) \
96b327f4 360 fprintf (FILE, "\tset LD%%%d,L%%%d-LI%%%d\n", (NUM), (NUM), (NUM)); \
fc3ffe83
RK
361 switch_table_difference_label_flag = 0; }
362
363int switch_table_difference_label_flag;
941d35a7
RS
364
365#define ASM_OUTPUT_OPCODE(FILE, PTR) \
366{ if ((PTR)[0] == 'j' && (PTR)[1] == 'b') \
367 { ++(PTR); \
368 while (*(PTR) != ' ') \
369 { putc (*(PTR), (FILE)); ++(PTR); } \
370 fprintf ((FILE), ".w"); } \
d69eb909
RS
371 else if ((PTR)[0] == 's') \
372 { \
373 if (!strncmp ((PTR), "swap", 4)) \
374 { fprintf ((FILE), "swap.w"); (PTR) += 4; } \
375 } \
941d35a7
RS
376 else if ((PTR)[0] == 'f') \
377 { \
378 if (!strncmp ((PTR), "fmove", 5)) \
379 { fprintf ((FILE), "fmov"); (PTR) += 5; } \
380 else if (!strncmp ((PTR), "fbne", 4)) \
381 { fprintf ((FILE), "fbneq"); (PTR) += 4; } \
382 } \
383/* MOVE, MOVEA, MOVEQ, MOVEC ==> MOV */ \
384 else if ((PTR)[0] == 'm' && (PTR)[1] == 'o' \
385 && (PTR)[2] == 'v' && (PTR)[3] == 'e') \
386 { fprintf ((FILE), "mov"); (PTR) += 4; \
d69eb909
RS
387 if ((PTR)[0] == 'q' || (PTR)[0] == 'a' \
388 || (PTR)[0] == 'c') (PTR)++; } \
941d35a7
RS
389/* SUB, SUBQ, SUBA, SUBI ==> SUB */ \
390 else if ((PTR)[0] == 's' && (PTR)[1] == 'u' \
391 && (PTR)[2] == 'b') \
392 { fprintf ((FILE), "sub"); (PTR) += 3; \
d69eb909
RS
393 if ((PTR)[0] == 'q' || (PTR)[0] == 'i' \
394 || (PTR)[0] == 'a') (PTR)++; } \
941d35a7
RS
395/* CMP, CMPA, CMPI, CMPM ==> CMP */ \
396 else if ((PTR)[0] == 'c' && (PTR)[1] == 'm' \
397 && (PTR)[2] == 'p') \
398 { fprintf ((FILE), "cmp"); (PTR) += 3; \
d69eb909
RS
399 if ((PTR)[0] == 'a' || (PTR)[0] == 'i' \
400 || (PTR)[0] == 'm') (PTR)++; } \
941d35a7
RS
401}
402
403#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED) \
404( fputs ("\tlcomm ", (FILE)), \
405 assemble_name ((FILE), (NAME)), \
406 fprintf ((FILE), ",%u\n", (ROUNDED)))
407
66dae892 408#define USER_LABEL_PREFIX ""
941d35a7
RS
409\f
410/* Override usual definitions of SDB output macros.
411 These definitions differ only in the absence of the period
412 at the beginning of the name of the directive
413 and in the use of `~' as the symbol for the current location. */
414
415#define PUT_SDB_SCL(a) fprintf(asm_out_file, "\tscl\t%d;", (a))
416#define PUT_SDB_INT_VAL(a) fprintf (asm_out_file, "\tval\t%d;", (a))
417#define PUT_SDB_VAL(a) \
418( fputs ("\tval\t", asm_out_file), \
419 output_addr_const (asm_out_file, (a)), \
420 fputc (';', asm_out_file))
421
422#define PUT_SDB_DEF(a) \
423do { fprintf (asm_out_file, "\tdef\t"); \
424 ASM_OUTPUT_LABELREF (asm_out_file, a); \
425 fprintf (asm_out_file, ";"); } while (0)
426
427#define PUT_SDB_PLAIN_DEF(a) fprintf(asm_out_file,"\tdef\t~%s;",a)
428#define PUT_SDB_ENDEF fputs("\tendef\n", asm_out_file)
429#define PUT_SDB_TYPE(a) fprintf(asm_out_file, "\ttype\t0%o;", a)
430#define PUT_SDB_SIZE(a) fprintf(asm_out_file, "\tsize\t%d;", a)
431#define PUT_SDB_START_DIM fprintf(asm_out_file, "\tdim\t")
432
433#define PUT_SDB_TAG(a) \
434do { fprintf (asm_out_file, "\ttag\t"); \
435 ASM_OUTPUT_LABELREF (asm_out_file, a); \
436 fprintf (asm_out_file, ";"); } while (0)
437
438#define PUT_SDB_BLOCK_START(LINE) \
439 fprintf (asm_out_file, \
440 "\tdef\t~bb;\tval\t~;\tscl\t100;\tline\t%d;\tendef\n", \
441 (LINE))
442
443#define PUT_SDB_BLOCK_END(LINE) \
444 fprintf (asm_out_file, \
445 "\tdef\t~eb;\tval\t~;\tscl\t100;\tline\t%d;\tendef\n", \
446 (LINE))
447
448#define PUT_SDB_FUNCTION_START(LINE) \
449 fprintf (asm_out_file, \
450 "\tdef\t~bf;\tval\t~;\tscl\t101;\tline\t%d;\tendef\n", \
451 (LINE))
452
453#define PUT_SDB_FUNCTION_END(LINE) \
454 fprintf (asm_out_file, \
455 "\tdef\t~ef;\tval\t~;\tscl\t101;\tline\t%d;\tendef\n", \
456 (LINE))
457
458#define PUT_SDB_EPILOGUE_END(NAME) \
459 fprintf (asm_out_file, \
460 "\tdef\t%s;\tval\t~;\tscl\t-1;\tendef\n", \
461 (NAME))
462
463#define SDB_GENERATE_FAKE(BUFFER, NUMBER) \
464 sprintf ((BUFFER), "~%dfake", (NUMBER));
465
466/* Define subroutines to call to handle multiply, divide, and remainder.
467 Use the subroutines that the 3b1's library provides.
468 The `*' prevents an underscore from being prepended by the compiler. */
469
470#define DIVSI3_LIBCALL "*ldiv"
471#define UDIVSI3_LIBCALL "*uldiv"
472#define MODSI3_LIBCALL "*lrem"
473#define UMODSI3_LIBCALL "*ulrem"
474#define MULSI3_LIBCALL "*lmul"
475#define UMULSI3_LIBCALL "*ulmul"
c270f796
RS
476
477/* Definitions for collect2. */
478
479#define OBJECT_FORMAT_COFF
c270f796
RS
480#define MY_ISCOFF(magic) \
481 ((magic) == MC68KWRMAGIC || (magic) == MC68KROMAGIC || (magic) == MC68KPGMAGIC)
This page took 1.257461 seconds and 5 git commands to generate.