190075Sobrien/* Definitions of target machine for GNU compiler, 290075Sobrien for PowerPC NetBSD systems. 3132718Skan Copyright 2002, 2003 Free Software Foundation, Inc. 4117395Skan Contributed by Wasabi Systems, Inc. 590075Sobrien 6132718Skan This file is part of GCC. 790075Sobrien 8132718Skan GCC is free software; you can redistribute it and/or modify it 9132718Skan under the terms of the GNU General Public License as published 10132718Skan by the Free Software Foundation; either version 2, or (at your 11132718Skan option) any later version. 1290075Sobrien 13132718Skan GCC is distributed in the hope that it will be useful, but WITHOUT 14132718Skan ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15132718Skan or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 16132718Skan License for more details. 1790075Sobrien 18132718Skan You should have received a copy of the GNU General Public License 19132718Skan along with GCC; see the file COPYING. If not, write to the 20169689Skan Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, 21169689Skan MA 02110-1301, USA. */ 2290075Sobrien 23132718Skan#undef TARGET_OS_CPP_BUILTINS /* FIXME: sysv4.h should not define this! */ 24117395Skan#define TARGET_OS_CPP_BUILTINS() \ 25117395Skan do \ 26117395Skan { \ 27117395Skan NETBSD_OS_CPP_BUILTINS_ELF(); \ 28117395Skan builtin_define ("__powerpc__"); \ 29117395Skan builtin_assert ("cpu=powerpc"); \ 30117395Skan builtin_assert ("machine=powerpc"); \ 31117395Skan } \ 32117395Skan while (0) 3390075Sobrien 34117395Skan/* Override the default from rs6000.h to avoid conflicts with macros 35117395Skan defined in NetBSD header files. */ 3690075Sobrien 37132718Skan#undef RS6000_CPU_CPP_ENDIAN_BUILTINS 38117395Skan#define RS6000_CPU_CPP_ENDIAN_BUILTINS() \ 39117395Skan do \ 40117395Skan { \ 41117395Skan if (BYTES_BIG_ENDIAN) \ 42117395Skan { \ 43117395Skan builtin_define ("__BIG_ENDIAN__"); \ 44117395Skan builtin_assert ("machine=bigendian"); \ 45117395Skan } \ 46117395Skan else \ 47117395Skan { \ 48117395Skan builtin_define ("__LITTLE_ENDIAN__"); \ 49117395Skan builtin_assert ("machine=littleendian"); \ 50117395Skan } \ 51117395Skan } \ 52117395Skan while (0) 5390075Sobrien 54117395Skan/* Make GCC agree with <machine/ansi.h>. */ 5590075Sobrien 56132718Skan#undef SIZE_TYPE 57117395Skan#define SIZE_TYPE "unsigned int" 5890075Sobrien 59132718Skan#undef PTRDIFF_TYPE 60117395Skan#define PTRDIFF_TYPE "int" 6190075Sobrien 62117395Skan/* Undo the spec mess from sysv4.h, and just define the specs 63117395Skan the way NetBSD systems actually expect. */ 6490075Sobrien 65132718Skan#undef CPP_SPEC 66117395Skan#define CPP_SPEC NETBSD_CPP_SPEC 6790075Sobrien 68132718Skan#undef LINK_SPEC 69117395Skan#define LINK_SPEC \ 70117395Skan "%{!msdata=none:%{G*}} %{msdata=none:-G0} \ 71117395Skan %(netbsd_link_spec)" 7290075Sobrien 73117395Skan#define NETBSD_ENTRY_POINT "_start" 7490075Sobrien 75132718Skan#undef STARTFILE_SPEC 76117395Skan#define STARTFILE_SPEC NETBSD_STARTFILE_SPEC 77117395Skan 78132718Skan#undef ENDFILE_SPEC 79117395Skan#define ENDFILE_SPEC \ 80117395Skan "crtsavres%O%s %(netbsd_endfile_spec)" 81117395Skan 82132718Skan#undef LIB_SPEC 83117395Skan#define LIB_SPEC NETBSD_LIB_SPEC 84117395Skan 85132718Skan#undef SUBTARGET_EXTRA_SPECS 86117395Skan#define SUBTARGET_EXTRA_SPECS \ 87117395Skan { "netbsd_link_spec", NETBSD_LINK_SPEC_ELF }, \ 88117395Skan { "netbsd_entry_point", NETBSD_ENTRY_POINT }, \ 89117395Skan { "netbsd_endfile_spec", NETBSD_ENDFILE_SPEC }, 90117395Skan 91117395Skan 92132718Skan#undef TARGET_VERSION 93117395Skan#define TARGET_VERSION fprintf (stderr, " (NetBSD/powerpc ELF)"); 94