1 /* Configuration file for an m68k OpenBSD target.
2 Copyright (C) 1999, 2002 Free Software Foundation, Inc.
4 This file is part of GNU CC.
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
8 the Free Software Foundation; either version 2, or (at your option)
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.
16 You should have received a copy of the GNU General Public License
17 along with GNU CC; see the file COPYING. If not, write to
18 the Free Software Foundation, 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. */
21 /* m68k is an old configuration that does not yet use the TARGET_CPU_DEFAULT
23 #define TARGET_DEFAULT (MASK_BITFIELD | MASK_68881 | MASK_68020)
25 #include <m68k/m68k.h>
27 /* Get generic OpenBSD definitions. */
31 /* Define __HAVE_68881__ in preprocessor, unless -msoft-float is specified.
32 This will control the use of inline 68881 insns in certain macros. */
34 #define CPP_SPEC "%{!msoft-float:-D__HAVE_68881__ -D__HAVE_FPU__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_POSIX_THREADS}"
36 /* Run-time target specifications. */
37 #define CPP_PREDEFINES "-D__unix__ -D__m68k__ -D__mc68000__ -D__mc68020__ -D__OpenBSD__ -Asystem=unix -Asystem=OpenBSD -Acpu=m68k -Amachine=m68k"
39 /* m68k as needs to know about the processor subtype. */
41 #define ASM_SPEC "%| %{m68030} %{m68040} %{m68060} %{fpic:-k} %{fPIC:-k -K}"
43 /* Layout of source language data types. */
45 /* This must agree with <machine/ansi.h> */
47 #define SIZE_TYPE "unsigned int"
50 #define PTRDIFF_TYPE "int"
53 #define WCHAR_TYPE "int"
55 #undef WCHAR_TYPE_SIZE
56 #define WCHAR_TYPE_SIZE 32
60 /* Every structure or union's size must be a multiple of 2 bytes. */
61 #define STRUCTURE_SIZE_BOUNDARY 16
63 /* Specific options for DBX Output. */
65 /* This is BSD, so it wants DBX format. */
66 #define DBX_DEBUGGING_INFO 1
68 /* Do not break .stabs pseudos into continuations. */
69 #define DBX_CONTIN_LENGTH 0
71 /* This is the char to use for continuation (in case we need to turn
72 continuation back on). */
73 #define DBX_CONTIN_CHAR '?'
75 /* Stack & calling: aggregate returns. */
77 /* Don't default to pcc-struct-return, because gcc is the only compiler, and
78 we want to retain compatibility with older gcc versions. */
79 #define DEFAULT_PCC_STRUCT_RETURN 0
81 /* Assembler format: exception region output. */
83 /* All configurations that don't use elf must be explicit about not using
84 dwarf unwind information. egcs doesn't try too hard to check internal
85 configuration files... */
86 #define DWARF2_UNWIND_INFO 0
89 /* TODO: TARGET_ASM_OUTPUT_MI_THUNK is busted. I need to figure out
90 what bra func@PLTPC means under linux, and find the corresponding
91 construction for our gas/pic setup. */
93 /* Taken from linux.h. Processor dependent optimized code to handle C++
94 multiple inheritance vtable lookup. */
96 /* Output code to add DELTA to the first argument, and then jump to FUNCTION.
97 Used for C++ multiple inheritance. */
98 #define TARGET_ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \
100 if (DELTA > 0 && DELTA <= 8) \
101 asm_fprintf (FILE, "\taddq.l %I%d,4(%Rsp)\n", DELTA); \
102 else if (DELTA < 0 && DELTA >= -8) \
103 asm_fprintf (FILE, "\tsubq.l %I%d,4(%Rsp)\n", -DELTA); \
105 asm_fprintf (FILE, "\tadd.l %I%d,4(%Rsp)\n", DELTA); \
109 fprintf (FILE, "\tbra.l "); \
110 assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \
111 fprintf (FILE, "@PLTPC\n"); \
115 fprintf (FILE, "\tjmp "); \
116 assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \
117 fprintf (FILE, "\n"); \