]>
Commit | Line | Data |
---|---|---|
c55dcc7d | 1 | /* Definitions of target machine for GNU compiler, for BeOS. |
9ebbca7d | 2 | Copyright (C) 1997, 2000 Free Software Foundation, Inc. |
c55dcc7d FF |
3 | Contributed by Fred Fish (fnf@cygnus.com), based on aix41.h |
4 | from David Edelsohn (edelsohn@npac.syr.edu). | |
5 | ||
6 | This file is part of GNU CC. | |
7 | ||
8 | GNU CC is free software; you can redistribute it and/or modify | |
9 | it under the terms of the GNU General Public License as published by | |
10 | the Free Software Foundation; either version 2, or (at your option) | |
11 | any later version. | |
12 | ||
13 | GNU CC is distributed in the hope that it will be useful, | |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | GNU General Public License for more details. | |
17 | ||
18 | You should have received a copy of the GNU General Public License | |
19 | along with GNU CC; see the file COPYING. If not, write to | |
20 | the Free Software Foundation, 59 Temple Place - Suite 330, | |
21 | Boston, MA 02111-1307, USA. */ | |
22 | ||
23 | ||
9ebbca7d GK |
24 | #include "rs6000/rs6000.h" |
25 | #include "rs6000/aix.h" | |
26 | ||
c55dcc7d FF |
27 | /* Enable AIX XL compiler calling convention breakage compatibility. */ |
28 | #define MASK_XL_CALL 0x40000000 | |
29 | #define TARGET_XL_CALL (target_flags & MASK_XL_CALL) | |
30 | #undef SUBTARGET_SWITCHES | |
31 | #define SUBTARGET_SWITCHES \ | |
32 | {"xl-call", MASK_XL_CALL}, \ | |
33 | {"no-xl-call", - MASK_XL_CALL}, \ | |
34 | {"threads", 0}, \ | |
35 | {"pe", 0}, | |
36 | ||
c55dcc7d FF |
37 | #undef ASM_SPEC |
38 | #define ASM_SPEC "-u %(asm_cpu)" | |
39 | ||
40 | #undef CPP_PREDEFINES | |
41 | /* __POWERPC__ must be defined for some header files */ | |
42 | #define CPP_PREDEFINES "-D__BEOS__ -D__POWERPC__ -Asystem(beos) -Acpu(powerpc) -Amachine(powerpc)" | |
43 | ||
44 | #undef CPP_SPEC | |
45 | #define CPP_SPEC "%{posix: -D_POSIX_SOURCE} %(cpp_cpu)" | |
46 | ||
47 | #undef CPP_DEFAULT_SPEC | |
48 | #define CPP_DEFAULT_SPEC "-D_ARCH_PPC" | |
49 | ||
50 | /* This is the easiest way to disable use of gcc's builtin alloca, | |
51 | which in the current BeOS release (DR9) is a problem because of the | |
52 | relatively low default stack size of 256K with no way to expand it. | |
53 | So anything we compile for the BeOS target should not use the | |
54 | builtin alloca. This also has the unwanted side effect of | |
55 | disabling all builtin functions though. */ | |
56 | ||
57 | #undef CC1_SPEC | |
58 | #define CC1_SPEC "%{!fbuiltin: -fno-builtin}" | |
59 | #undef CC1PLUS_SPEC | |
60 | #define CC1PLUS_SPEC "%{!fbuiltin: -fno-builtin}" | |
61 | ||
62 | #undef ASM_DEFAULT_SPEC | |
63 | #define ASM_DEFAULT_SPEC "-mppc" | |
64 | ||
65 | #undef TARGET_DEFAULT | |
66 | #define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS) | |
67 | ||
68 | #undef PROCESSOR_DEFAULT | |
69 | #define PROCESSOR_DEFAULT PROCESSOR_PPC603 | |
70 | ||
71 | /* Define this macro as a C expression for the initializer of an | |
72 | array of string to tell the driver program which options are | |
73 | defaults for this target and thus do not need to be handled | |
74 | specially when using `MULTILIB_OPTIONS'. | |
75 | ||
76 | Do not define this macro if `MULTILIB_OPTIONS' is not defined in | |
77 | the target makefile fragment or if none of the options listed in | |
78 | `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */ | |
79 | ||
80 | #undef MULTILIB_DEFAULTS | |
81 | #define MULTILIB_DEFAULTS { "mcpu=powerpc" } | |
82 | ||
c55dcc7d FF |
83 | /* These empty definitions get rid of the attempt to link in crt0.o |
84 | and any libraries like libc.a. | |
85 | On BeOS the ld executable is actually a linker front end that first runs | |
86 | the GNU linker with the -r option to generate a relocatable XCOFF output | |
87 | file, and then runs Metrowork's linker (mwld) to generate a fully linked | |
88 | executable. */ | |
89 | ||
90 | #undef LIB_SPEC | |
91 | #define LIB_SPEC "" | |
92 | ||
93 | #undef LINK_SPEC | |
94 | #define LINK_SPEC "" | |
95 | ||
96 | #undef STARTFILE_SPEC | |
97 | #define STARTFILE_SPEC "" | |
98 | ||
99 | /* Text to write out after a CALL that may be replaced by glue code by | |
100 | the loader. */ | |
101 | ||
102 | #undef RS6000_CALL_GLUE | |
103 | #define RS6000_CALL_GLUE "cror 15,15,15" | |
104 | ||
105 | /* Struct alignments are done on 4 byte boundaries for all types. */ | |
106 | #undef BIGGEST_FIELD_ALIGNMENT | |
107 | #define BIGGEST_FIELD_ALIGNMENT 32 |