/* Definitions of target machine for GNU compiler.  Vxworks PowerPC version.
   Copyright (C) 1996, 2000, 2002, 2003 Free Software Foundation, Inc.

   This file is part of GCC.

   GCC is free software; you can redistribute it and/or modify it
   under the terms of the GNU General Public License as published
   by the Free Software Foundation; either version 2, or (at your
   option) any later version.

   GCC is distributed in the hope that it will be useful, but WITHOUT
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
   License for more details.

   You should have received a copy of the GNU General Public License
   along with GCC; see the file COPYING.  If not, write to the
   Free Software Foundation, 59 Temple Place - Suite 330, Boston,
   MA 02111-1307, USA.  */

#undef  TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS()		\
  do						\
    {						\
      builtin_define ("__vxworks");		\
      builtin_define ("__vxworks__");		\
    }						\
  while (0)

/* We have to kill off the entire specs set created by rs6000/sysv4.h
   and substitute our own set.  The top level vxworks.h has done some
   of this for us.  */

#undef SUBTARGET_EXTRA_SPECS
#undef CPP_SPEC
#undef CC1_SPEC
#undef ASM_SPEC

#define SUBTARGET_EXTRA_SPECS /* none needed */

#define CPP_SPEC \
"-DCPU_FAMILY=PPC -D__ppc -D__EABI__  \
 %{t403: -DCPU=PPC403 -D_SOFT_FLOAT ; \
   t405: -DCPU=PPC405 -D_SOFT_FLOAT ; \
   t440: -DCPU=PPC440 -D_SOFT_FLOAT ; \
   t603: -DCPU=PPC603               ; \
   t604: -DCPU=PPC604               ; \
   t860: -DCPU=PPC860 -D_SOFT_FLOAT ; \
       : -DCPU=PPC604}  \
 %{!msoft-float:-D__hardfp}	   \
 %{fpic|fpie: -D__PIC__=1 -D__pic__=1 ; \
   fPIC|fPIE: -D__PIC__=2 -D__pic__=2 } \
 %(cpp_cpu)"

#define CC1_SPEC \
"%{t403: -mcpu=403 -mstrict-align ;				\
   t405: -mcpu=405 -mstrict-align ;				\
   t440: -mcpu=440 -mstrict-align ;				\
   t603: -mcpu=603 -mstrict-align ;				\
   t604: -mcpu=604 -mstrict-align ;				\
   t860: -mcpu=860                ;                             \
       : -mcpu=604 -mstrict-align }				\
 %{G*} %{mno-sdata:-msdata=none} %{msdata:-msdata=default}	\
 %{mlittle|mlittle-endian:-mstrict-align}			\
 %{profile: -p}							\
 %{fvec:-maltivec} %{fvec-eabi:-maltivec -mabi=altivec}"
   
#define ASM_SPEC "%(asm_cpu) \
%{.s: %{mregnames} %{mno-regnames}} %{.S: %{mregnames} %{mno-regnames}} \
%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} \
%{mrelocatable} %{mrelocatable-lib} %{fpic:-K PIC} %{fPIC:-K PIC} -mbig"

#undef  MULTILIB_DEFAULTS
#define MULTILIB_DEFAULTS { "t604" }

/* We can't use .ctors/.dtors sections.  */
#undef TARGET_ASM_OUTPUT_CONSTRUCTOR
#undef TARGET_ASM_OUTPUT_DESTRUCTOR

/* Nor sdata.  */
#undef  SDATA_DEFAULT_SIZE
#define SDATA_DEFAULT_SIZE 0
