xref: /openbsd-src/gnu/gcc/gcc/config/rs6000/netbsd.h (revision 404b540a9034ac75a6199ad1a32d1bbc7a0d4210)
1 /* Definitions of target machine for GNU compiler,
2    for PowerPC NetBSD systems.
3    Copyright 2002, 2003 Free Software Foundation, Inc.
4    Contributed by Wasabi Systems, Inc.
5 
6    This file is part of GCC.
7 
8    GCC is free software; you can redistribute it and/or modify it
9    under the terms of the GNU General Public License as published
10    by the Free Software Foundation; either version 2, or (at your
11    option) any later version.
12 
13    GCC is distributed in the hope that it will be useful, but WITHOUT
14    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
16    License for more details.
17 
18    You should have received a copy of the GNU General Public License
19    along with GCC; see the file COPYING.  If not, write to the
20    Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
21    MA 02110-1301, USA.  */
22 
23 #undef  TARGET_OS_CPP_BUILTINS	/* FIXME: sysv4.h should not define this! */
24 #define TARGET_OS_CPP_BUILTINS()		\
25   do						\
26     {						\
27       NETBSD_OS_CPP_BUILTINS_ELF();		\
28       builtin_define ("__powerpc__");		\
29       builtin_assert ("cpu=powerpc");		\
30       builtin_assert ("machine=powerpc");	\
31     }						\
32   while (0)
33 
34 /* Override the default from rs6000.h to avoid conflicts with macros
35    defined in NetBSD header files.  */
36 
37 #undef  RS6000_CPU_CPP_ENDIAN_BUILTINS
38 #define RS6000_CPU_CPP_ENDIAN_BUILTINS()	\
39   do						\
40     {						\
41       if (BYTES_BIG_ENDIAN)			\
42 	{					\
43 	  builtin_define ("__BIG_ENDIAN__");	\
44 	  builtin_assert ("machine=bigendian");	\
45 	}					\
46       else					\
47 	{					\
48 	  builtin_define ("__LITTLE_ENDIAN__");	\
49 	  builtin_assert ("machine=littleendian"); \
50 	}					\
51     }						\
52   while (0)
53 
54 /* Make GCC agree with <machine/ansi.h>.  */
55 
56 #undef  SIZE_TYPE
57 #define SIZE_TYPE "unsigned int"
58 
59 #undef  PTRDIFF_TYPE
60 #define PTRDIFF_TYPE "int"
61 
62 /* Undo the spec mess from sysv4.h, and just define the specs
63    the way NetBSD systems actually expect.  */
64 
65 #undef  CPP_SPEC
66 #define CPP_SPEC NETBSD_CPP_SPEC
67 
68 #undef  LINK_SPEC
69 #define LINK_SPEC \
70   "%{!msdata=none:%{G*}} %{msdata=none:-G0} \
71    %(netbsd_link_spec)"
72 
73 #define NETBSD_ENTRY_POINT "_start"
74 
75 #undef  STARTFILE_SPEC
76 #define STARTFILE_SPEC NETBSD_STARTFILE_SPEC
77 
78 #undef  ENDFILE_SPEC
79 #define ENDFILE_SPEC \
80   "crtsavres%O%s %(netbsd_endfile_spec)"
81 
82 #undef  LIB_SPEC
83 #define LIB_SPEC NETBSD_LIB_SPEC
84 
85 #undef  SUBTARGET_EXTRA_SPECS
86 #define SUBTARGET_EXTRA_SPECS					\
87   { "netbsd_link_spec",		NETBSD_LINK_SPEC_ELF },		\
88   { "netbsd_entry_point",	NETBSD_ENTRY_POINT },		\
89   { "netbsd_endfile_spec",	NETBSD_ENDFILE_SPEC },
90 
91 
92 #undef  TARGET_VERSION
93 #define TARGET_VERSION fprintf (stderr, " (NetBSD/powerpc ELF)");
94