OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [gcc/] [config/] [mips/] [netbsd.h] - Blame information for rev 12

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 12 jlechner
/* Definitions of target machine for GNU compiler, for MIPS NetBSD systems.
2
   Copyright (C) 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004
3
   Free Software Foundation, Inc.
4
 
5
This file is part of GCC.
6
 
7
GCC is free software; you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published by
9
the Free Software Foundation; either version 2, or (at your option)
10
any later version.
11
 
12
GCC is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
GNU General Public License for more details.
16
 
17
You should have received a copy of the GNU General Public License
18
along with GCC; see the file COPYING.  If not, write to
19
the Free Software Foundation, 51 Franklin Street, Fifth Floor,
20
Boston, MA 02110-1301, USA.  */
21
 
22
 
23
/* Define default target values.  */
24
 
25
#undef MACHINE_TYPE
26
#if TARGET_ENDIAN_DEFAULT != 0
27
#define MACHINE_TYPE "NetBSD/mipseb ELF"
28
#else
29
#define MACHINE_TYPE "NetBSD/mipsel ELF"
30
#endif
31
 
32
#define TARGET_OS_CPP_BUILTINS()                        \
33
  do                                                    \
34
    {                                                   \
35
      NETBSD_OS_CPP_BUILTINS_ELF();                     \
36
      builtin_define ("__NO_LEADING_UNDERSCORES__");    \
37
      builtin_define ("__GP_SUPPORT__");                \
38
      if (TARGET_LONG64)                                \
39
        builtin_define ("__LONG64");                    \
40
                                                        \
41
      if (TARGET_ABICALLS)                              \
42
        builtin_define ("__ABICALLS__");                \
43
                                                        \
44
      if (mips_abi == ABI_EABI)                         \
45
        builtin_define ("__mips_eabi");                 \
46
      else if (mips_abi == ABI_N32)                     \
47
        builtin_define ("__mips_n32");                  \
48
      else if (mips_abi == ABI_64)                      \
49
        builtin_define ("__mips_n64");                  \
50
      else if (mips_abi == ABI_O64)                     \
51
        builtin_define ("__mips_o64");                  \
52
    }                                                   \
53
  while (0)
54
 
55
/* The generic MIPS TARGET_CPU_CPP_BUILTINS are incorrect for NetBSD.
56
   Specifically, they define too many namespace-invasive macros.  Override
57
   them here.  Note this is structured for easy comparison to the version
58
   in mips.h.
59
 
60
   FIXME: This probably isn't the best solution.  But in the absence
61
   of something better, it will have to do, for now.  */
62
 
63
#undef TARGET_CPU_CPP_BUILTINS
64
#define TARGET_CPU_CPP_BUILTINS()                               \
65
  do                                                            \
66
    {                                                           \
67
      builtin_assert ("cpu=mips");                              \
68
      builtin_define ("__mips__");                              \
69
      builtin_define ("_mips");                                 \
70
                                                                \
71
      /* No _R3000 or _R4000.  */                               \
72
      if (TARGET_64BIT)                                         \
73
        builtin_define ("__mips64");                            \
74
                                                                \
75
      if (TARGET_FLOAT64)                                       \
76
        builtin_define ("__mips_fpr=64");                       \
77
      else                                                      \
78
        builtin_define ("__mips_fpr=32");                       \
79
                                                                \
80
      if (TARGET_MIPS16)                                        \
81
        builtin_define ("__mips16");                            \
82
                                                                \
83
      MIPS_CPP_SET_PROCESSOR ("_MIPS_ARCH", mips_arch_info);    \
84
      MIPS_CPP_SET_PROCESSOR ("_MIPS_TUNE", mips_tune_info);    \
85
                                                                \
86
      if (ISA_MIPS1)                                            \
87
        builtin_define ("__mips=1");                            \
88
      else if (ISA_MIPS2)                                       \
89
        builtin_define ("__mips=2");                            \
90
      else if (ISA_MIPS3)                                       \
91
        builtin_define ("__mips=3");                            \
92
      else if (ISA_MIPS4)                                       \
93
        builtin_define ("__mips=4");                            \
94
      else if (ISA_MIPS32)                                      \
95
        {                                                       \
96
          builtin_define ("__mips=32");                         \
97
          builtin_define ("__mips_isa_rev=1");                  \
98
        }                                                       \
99
      else if (ISA_MIPS32R2)                                    \
100
        {                                                       \
101
          builtin_define ("__mips=32");                         \
102
          builtin_define ("__mips_isa_rev=2");                  \
103
        }                                                       \
104
      else if (ISA_MIPS64)                                      \
105
        {                                                       \
106
          builtin_define ("__mips=64");                         \
107
          builtin_define ("__mips_isa_rev=1");                  \
108
        }                                                       \
109
                                                                \
110
      if (TARGET_HARD_FLOAT)                                    \
111
        builtin_define ("__mips_hard_float");                   \
112
      else if (TARGET_SOFT_FLOAT)                               \
113
        builtin_define ("__mips_soft_float");                   \
114
                                                                \
115
      if (TARGET_SINGLE_FLOAT)                                  \
116
        builtin_define ("__mips_single_float");                 \
117
                                                                \
118
      if (TARGET_BIG_ENDIAN)                                    \
119
        builtin_define ("__MIPSEB__");                          \
120
      else                                                      \
121
        builtin_define ("__MIPSEL__");                          \
122
                                                                \
123
      /* No language dialect defines.  */                       \
124
                                                                \
125
      /* ABIs handled in TARGET_OS_CPP_BUILTINS.  */            \
126
    }                                                           \
127
  while (0)
128
 
129
 
130
/* Clean up after the generic MIPS/ELF configuration.  */
131
#undef MD_EXEC_PREFIX
132
#undef MD_STARTFILE_PREFIX
133
 
134
/* Extra specs we need.  */
135
#undef SUBTARGET_EXTRA_SPECS
136
#define SUBTARGET_EXTRA_SPECS                                           \
137
  { "netbsd_cpp_spec",          NETBSD_CPP_SPEC },                      \
138
  { "netbsd_link_spec",         NETBSD_LINK_SPEC_ELF },                 \
139
  { "netbsd_entry_point",       NETBSD_ENTRY_POINT },
140
 
141
/* Provide a SUBTARGET_CPP_SPEC appropriate for NetBSD.  */
142
 
143
#undef SUBTARGET_CPP_SPEC
144
#define SUBTARGET_CPP_SPEC "%(netbsd_cpp_spec)"
145
 
146
/* Provide a LINK_SPEC appropriate for a NetBSD/mips target.
147
   This is a copy of LINK_SPEC from <netbsd-elf.h> tweaked for
148
   the MIPS target.  */
149
 
150
#undef LINK_SPEC
151
#define LINK_SPEC \
152
  "%{EL:-m elf32lmip} \
153
   %{EB:-m elf32bmip} \
154
   %(endian_spec) \
155
   %{G*} %{mips1} %{mips2} %{mips3} %{mips4} %{mips32} %{mips32r2} %{mips64} \
156
   %{bestGnum} %{call_shared} %{no_archive} %{exact_version} \
157
   %(netbsd_link_spec)"
158
 
159
#define NETBSD_ENTRY_POINT "__start"
160
 
161
#undef SUBTARGET_ASM_SPEC
162
#define SUBTARGET_ASM_SPEC \
163
  "%{!mno-abicalls: \
164
     %{!fno-PIC:%{!fno-pic:-KPIC}}}"
165
 
166
 
167
/* -G is incompatible with -KPIC which is the default, so only allow objects
168
   in the small data section if the user explicitly asks for it.  */
169
 
170
#undef MIPS_DEFAULT_GVALUE
171
#define MIPS_DEFAULT_GVALUE 0
172
 
173
 
174
/* This defines which switch letters take arguments.  -G is a MIPS
175
   special.  */
176
 
177
#undef SWITCH_TAKES_ARG
178
#define SWITCH_TAKES_ARG(CHAR)                                          \
179
  (DEFAULT_SWITCH_TAKES_ARG (CHAR)                                      \
180
   || (CHAR) == 'R'                                                     \
181
   || (CHAR) == 'G')
182
 
183
 
184
#undef ASM_FINAL_SPEC
185
#undef SET_ASM_OP
186
 
187
 
188
/* NetBSD hasn't historically provided _flush_cache(), but rather
189
   _cacheflush(), which takes the same arguments as the former.  */
190
#undef CACHE_FLUSH_FUNC
191
#define CACHE_FLUSH_FUNC "_cacheflush"
192
 
193
 
194
/* Make gcc agree with <machine/ansi.h> */
195
 
196
#undef WCHAR_TYPE
197
#define WCHAR_TYPE "int"
198
 
199
#undef WCHAR_TYPE_SIZE
200
#define WCHAR_TYPE_SIZE 32
201
 
202
#undef WINT_TYPE
203
#define WINT_TYPE "int"

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.