OSDN Git Service

1125e83f0d83ad635c7ae4043f6cd7dec34b0d5b
[pf3gnuchains/gcc-fork.git] / gcc / config / rs6000 / rtems.h
1 /* Definitions for rtems targeting a PowerPC using elf.
2    Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2007
3    Free Software Foundation, Inc.
4    Contributed by Joel Sherrill (joel@OARcorp.com).
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 3, 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 COPYING3.  If not see
20    <http://www.gnu.org/licenses/>.  */
21
22 /* Specify predefined symbols in preprocessor.  */
23
24 #undef TARGET_OS_CPP_BUILTINS
25 #define TARGET_OS_CPP_BUILTINS()          \
26   do                                      \
27     {                                     \
28       builtin_define_std ("PPC");         \
29       builtin_define ("__rtems__");       \
30       builtin_define ("__USE_INIT_FINI__"); \
31       builtin_assert ("system=rtems");    \
32       builtin_assert ("cpu=powerpc");     \
33       builtin_assert ("machine=powerpc"); \
34       TARGET_OS_SYSV_CPP_BUILTINS ();     \
35     }                                     \
36   while (0)
37
38 #undef CPP_OS_DEFAULT_SPEC
39 #define CPP_OS_DEFAULT_SPEC "%(cpp_os_rtems)"
40
41 #define CPP_OS_RTEMS_SPEC "\
42 %{!mcpu*:  %{!Dppc*: %{!Dmpc*: -Dmpc750} } }\
43 %{mcpu=403:  %{!Dppc*: %{!Dmpc*: -Dppc403}  } } \
44 %{mcpu=505:  %{!Dppc*: %{!Dmpc*: -Dmpc505}  } } \
45 %{mcpu=601:  %{!Dppc*: %{!Dmpc*: -Dppc601}  } } \
46 %{mcpu=602:  %{!Dppc*: %{!Dmpc*: -Dppc602}  } } \
47 %{mcpu=603:  %{!Dppc*: %{!Dmpc*: -Dppc603}  } } \
48 %{mcpu=603e: %{!Dppc*: %{!Dmpc*: -Dppc603e} } } \
49 %{mcpu=604:  %{!Dppc*: %{!Dmpc*: -Dmpc604}  } } \
50 %{mcpu=750:  %{!Dppc*: %{!Dmpc*: -Dmpc750}  } } \
51 %{mcpu=821:  %{!Dppc*: %{!Dmpc*: -Dmpc821}  } } \
52 %{mcpu=860:  %{!Dppc*: %{!Dmpc*: -Dmpc860}  } } \
53 %{mcpu=8540: %{!Dppc*: %{!Dmpc*: -Dppc8540}  } }" 
54
55 #undef  SUBSUBTARGET_EXTRA_SPECS
56 #define SUBSUBTARGET_EXTRA_SPECS \
57   { "cpp_os_rtems",             CPP_OS_RTEMS_SPEC }
58
59 #undef SUBSUBTARGET_OVERRIDE_OPTIONS
60 #define SUBSUBTARGET_OVERRIDE_OPTIONS                                   \
61   do {                                                                  \
62     if (TARGET_E500)                                                    \
63       {                                                                 \
64         if (TARGET_HARD_FLOAT && !rs6000_explicit_options.float_gprs)   \
65           rs6000_float_gprs = 1;                                        \
66       }                                                                 \
67   } while(0)