]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/mips/netbsd.h
Update copyright years.
[thirdparty/gcc.git] / gcc / config / mips / netbsd.h
CommitLineData
f982f805 1/* Definitions of target machine for GNU compiler, for MIPS NetBSD systems.
8d9254fc 2 Copyright (C) 1993-2020 Free Software Foundation, Inc.
f5acdcc1 3
7ec022b2 4This file is part of GCC.
f5acdcc1 5
7ec022b2 6GCC is free software; you can redistribute it and/or modify
f5acdcc1 7it under the terms of the GNU General Public License as published by
2f83c7d6 8the Free Software Foundation; either version 3, or (at your option)
f5acdcc1
JW
9any later version.
10
7ec022b2 11GCC is distributed in the hope that it will be useful,
f5acdcc1
JW
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
2f83c7d6
NC
17along with GCC; see the file COPYING3. If not see
18<http://www.gnu.org/licenses/>. */
f5acdcc1 19
f5acdcc1 20
031a26c5 21/* Define default target values. */
f5acdcc1 22
e1c293ae
JT
23#define TARGET_OS_CPP_BUILTINS() \
24 do \
25 { \
26 NETBSD_OS_CPP_BUILTINS_ELF(); \
27 builtin_define ("__NO_LEADING_UNDERSCORES__"); \
e1c293ae 28 builtin_define ("__GP_SUPPORT__"); \
e1c293ae
JT
29 if (TARGET_LONG64) \
30 builtin_define ("__LONG64"); \
a24f7c1a 31 \
d8986082
JT
32 if (TARGET_ABICALLS) \
33 builtin_define ("__ABICALLS__"); \
34 \
8785c60a
MH
35 if (mips_abi == ABI_32) \
36 builtin_define ("__mips_o32"); \
37 else if (mips_abi == ABI_EABI) \
a24f7c1a
JT
38 builtin_define ("__mips_eabi"); \
39 else if (mips_abi == ABI_N32) \
40 builtin_define ("__mips_n32"); \
41 else if (mips_abi == ABI_64) \
42 builtin_define ("__mips_n64"); \
43 else if (mips_abi == ABI_O64) \
44 builtin_define ("__mips_o64"); \
e1c293ae
JT
45 } \
46 while (0)
47
a24f7c1a
JT
48/* The generic MIPS TARGET_CPU_CPP_BUILTINS are incorrect for NetBSD.
49 Specifically, they define too many namespace-invasive macros. Override
50 them here. Note this is structured for easy comparison to the version
51 in mips.h.
52
dab66575 53 FIXME: This probably isn't the best solution. But in the absence
a24f7c1a
JT
54 of something better, it will have to do, for now. */
55
56#undef TARGET_CPU_CPP_BUILTINS
57#define TARGET_CPU_CPP_BUILTINS() \
58 do \
59 { \
60 builtin_assert ("cpu=mips"); \
61 builtin_define ("__mips__"); \
62 builtin_define ("_mips"); \
63 \
64 /* No _R3000 or _R4000. */ \
65 if (TARGET_64BIT) \
66 builtin_define ("__mips64"); \
67 \
68 if (TARGET_FLOAT64) \
69 builtin_define ("__mips_fpr=64"); \
70 else \
71 builtin_define ("__mips_fpr=32"); \
72 \
73 if (TARGET_MIPS16) \
74 builtin_define ("__mips16"); \
75 \
76 MIPS_CPP_SET_PROCESSOR ("_MIPS_ARCH", mips_arch_info); \
77 MIPS_CPP_SET_PROCESSOR ("_MIPS_TUNE", mips_tune_info); \
78 \
79 if (ISA_MIPS1) \
80 builtin_define ("__mips=1"); \
81 else if (ISA_MIPS2) \
82 builtin_define ("__mips=2"); \
83 else if (ISA_MIPS3) \
84 builtin_define ("__mips=3"); \
85 else if (ISA_MIPS4) \
86 builtin_define ("__mips=4"); \
82f84ecb
MF
87 else if (mips_isa >= 32 && mips_isa < 64) \
88 builtin_define ("__mips=32"); \
89 else if (mips_isa >= 64) \
90 builtin_define ("__mips=64"); \
91 if (mips_isa_rev > 0) \
92 builtin_define_with_int_value ("__mips_isa_rev", \
93 mips_isa_rev); \
a24f7c1a
JT
94 \
95 if (TARGET_HARD_FLOAT) \
96 builtin_define ("__mips_hard_float"); \
97 else if (TARGET_SOFT_FLOAT) \
98 builtin_define ("__mips_soft_float"); \
99 \
100 if (TARGET_SINGLE_FLOAT) \
101 builtin_define ("__mips_single_float"); \
102 \
103 if (TARGET_BIG_ENDIAN) \
104 builtin_define ("__MIPSEB__"); \
105 else \
106 builtin_define ("__MIPSEL__"); \
107 \
108 /* No language dialect defines. */ \
109 \
110 /* ABIs handled in TARGET_OS_CPP_BUILTINS. */ \
111 } \
112 while (0)
113
f5acdcc1 114
e1c293ae
JT
115/* Extra specs we need. */
116#undef SUBTARGET_EXTRA_SPECS
117#define SUBTARGET_EXTRA_SPECS \
1569d670
JT
118 { "netbsd_cpp_spec", NETBSD_CPP_SPEC }, \
119 { "netbsd_link_spec", NETBSD_LINK_SPEC_ELF }, \
120 { "netbsd_entry_point", NETBSD_ENTRY_POINT },
e1c293ae 121
e1c293ae 122/* Provide a SUBTARGET_CPP_SPEC appropriate for NetBSD. */
f982f805
JT
123
124#undef SUBTARGET_CPP_SPEC
e1c293ae 125#define SUBTARGET_CPP_SPEC "%(netbsd_cpp_spec)"
f5acdcc1 126
f982f805
JT
127/* Provide a LINK_SPEC appropriate for a NetBSD/mips target.
128 This is a copy of LINK_SPEC from <netbsd-elf.h> tweaked for
129 the MIPS target. */
f5acdcc1 130
f982f805 131#undef LINK_SPEC
1569d670
JT
132#define LINK_SPEC \
133 "%{EL:-m elf32lmip} \
134 %{EB:-m elf32bmip} \
135 %(endian_spec) \
82f84ecb
MF
136 %{G*} %{mips1} %{mips2} %{mips3} %{mips4} %{mips32} %{mips32r2} \
137 %{mips32r6} %{mips64} %{mips64r6} \
1569d670
JT
138 %(netbsd_link_spec)"
139
140#define NETBSD_ENTRY_POINT "__start"
f982f805
JT
141
142#undef SUBTARGET_ASM_SPEC
9f689d92
JT
143#define SUBTARGET_ASM_SPEC \
144 "%{!mno-abicalls: \
145 %{!fno-PIC:%{!fno-pic:-KPIC}}}"
f982f805
JT
146
147
148/* -G is incompatible with -KPIC which is the default, so only allow objects
149 in the small data section if the user explicitly asks for it. */
150
ce3649d2
EC
151#undef MIPS_DEFAULT_GVALUE
152#define MIPS_DEFAULT_GVALUE 0
f982f805
JT
153
154
f5acdcc1 155#undef ASM_FINAL_SPEC
f982f805
JT
156#undef SET_ASM_OP
157
158
ac64a17c
JT
159/* NetBSD hasn't historically provided _flush_cache(), but rather
160 _cacheflush(), which takes the same arguments as the former. */
161#undef CACHE_FLUSH_FUNC
162#define CACHE_FLUSH_FUNC "_cacheflush"
163
164
f982f805
JT
165/* Make gcc agree with <machine/ansi.h> */
166
167#undef WCHAR_TYPE
168#define WCHAR_TYPE "int"
169
f982f805
JT
170#undef WCHAR_TYPE_SIZE
171#define WCHAR_TYPE_SIZE 32
172
173#undef WINT_TYPE
174#define WINT_TYPE "int"