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