OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [config/] [rs6000/] [vxworks.h] - Blame information for rev 414

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 282 jeremybenn
/* Definitions of target machine for GNU compiler.  Vxworks PowerPC version.
2
   Copyright (C) 1996, 2000, 2002, 2003, 2004, 2005, 2007, 2009
3
   Free Software Foundation, Inc.
4
   Contributed by CodeSourcery, LLC.
5
 
6
This file is part of GCC.
7
 
8
GCC is free software; you can redistribute it and/or modify it under
9
the terms of the GNU General Public License as published by the Free
10
Software Foundation; either version 3, or (at your option) any later
11
version.
12
 
13
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
14
WARRANTY; without even the implied warranty of MERCHANTABILITY or
15
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
16
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
/* Note to future editors: VxWorks is mostly an EABI target.  We do
23
   not use rs6000/eabi.h because we would have to override most of
24
   it anyway.  However, if you change that file, consider making
25
   analogous changes here too.  */
26
 
27
#undef TARGET_VERSION
28
#define TARGET_VERSION fprintf (stderr, " (PowerPC VxWorks)");
29
 
30
/* CPP predefined macros.  */
31
 
32
#undef TARGET_OS_CPP_BUILTINS
33
#define TARGET_OS_CPP_BUILTINS()                \
34
  do                                            \
35
    {                                           \
36
      builtin_define ("__ppc");                 \
37
      builtin_define ("__EABI__");              \
38
      builtin_define ("__ELF__");               \
39
      builtin_define ("__vxworks");             \
40
      builtin_define ("__VXWORKS__");           \
41
      if (!TARGET_SOFT_FLOAT)                   \
42
        builtin_define ("__hardfp");            \
43
                                                \
44
      /* C89 namespace violation! */            \
45
      builtin_define ("CPU_FAMILY=PPC");        \
46
    }                                           \
47
  while (0)
48
 
49
/* Only big endian PPC is supported by VxWorks.  */
50
#undef BYTES_BIG_ENDIAN
51
#define BYTES_BIG_ENDIAN 1
52
 
53
/* We have to kill off the entire specs set created by rs6000/sysv4.h
54
   and substitute our own set.  The top level vxworks.h has done some
55
   of this for us.  */
56
 
57
#undef SUBTARGET_EXTRA_SPECS
58
#undef CPP_SPEC
59
#undef CC1_SPEC
60
#undef ASM_SPEC
61
 
62
#define SUBTARGET_EXTRA_SPECS /* none needed */
63
 
64
/* FIXME: The only reason we allow no -mcpu switch at all is because
65
   config-ml.in insists on a "." multilib. */
66
#define CPP_SPEC \
67
"%{!DCPU=*:               \
68
   %{mcpu=403 : -DCPU=PPC403  ; \
69
     mcpu=405 : -DCPU=PPC405  ; \
70
     mcpu=440 : -DCPU=PPC440  ; \
71
     mcpu=464 : -DCPU=PPC464  ; \
72
     mcpu=476 : -DCPU=PPC476  ; \
73
     mcpu=603 : -DCPU=PPC603  ; \
74
     mcpu=604 : -DCPU=PPC604  ; \
75
     mcpu=860 : -DCPU=PPC860  ; \
76
     mcpu=8540: -DCPU=PPC85XX ; \
77
              : -DCPU=PPC604  }}" \
78
VXWORKS_ADDITIONAL_CPP_SPEC
79
 
80
#define CC1_SPEC                                                \
81
"%{G*} %{mno-sdata:-msdata=none} %{msdata:-msdata=default}      \
82
 %{mlittle|mlittle-endian:-mstrict-align}                       \
83
 %{profile: -p}         \
84
 %{fvec:-maltivec} %{fvec-eabi:-maltivec -mabi=altivec}"
85
 
86
#define ASM_SPEC \
87
"%(asm_cpu) \
88
 %{,assembler|,assembler-with-cpp: %{mregnames} %{mno-regnames}} \
89
 %{v:-v} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} \
90
 %{mrelocatable} %{mrelocatable-lib} %{fpic:-K PIC} %{fPIC:-K PIC} -mbig"
91
 
92
#undef  LIB_SPEC
93
#define LIB_SPEC VXWORKS_LIB_SPEC
94
#undef  LINK_SPEC
95
#define LINK_SPEC VXWORKS_LINK_SPEC
96
#undef  STARTFILE_SPEC
97
#define STARTFILE_SPEC VXWORKS_STARTFILE_SPEC
98
#undef  ENDFILE_SPEC
99
#define ENDFILE_SPEC VXWORKS_ENDFILE_SPEC
100
 
101
/* There is no default multilib.  */
102
#undef MULTILIB_DEFAULTS
103
 
104
#undef TARGET_DEFAULT
105
#define TARGET_DEFAULT \
106
  (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_EABI | MASK_STRICT_ALIGN)
107
 
108
#undef PROCESSOR_DEFAULT
109
#define PROCESSOR_DEFAULT PROCESSOR_PPC604
110
 
111
/* Nor sdata, for kernel mode.  We use this in
112
   SUBSUBTARGET_INITIALIZE_OPTIONS, after rs6000_rtp has been initialized.  */
113
#undef SDATA_DEFAULT_SIZE
114
#define SDATA_DEFAULT_SIZE (TARGET_VXWORKS_RTP ? 8 : 0)
115
 
116
#undef  STACK_BOUNDARY
117
#define STACK_BOUNDARY (16*BITS_PER_UNIT)
118
/* Override sysv4.h, reset to the default.  */
119
#undef  PREFERRED_STACK_BOUNDARY
120
 
121
/* Make -mcpu=8540 imply SPE.  ISEL is automatically enabled, the
122
   others must be done by hand.  Handle -mrtp.  Disable -fPIC
123
   for -mrtp - the VxWorks PIC model is not compatible with it.  */
124
#undef SUBSUBTARGET_OVERRIDE_OPTIONS
125
#define SUBSUBTARGET_OVERRIDE_OPTIONS           \
126
  do {                                          \
127
    if (TARGET_E500)                            \
128
      {                                         \
129
        rs6000_spe = 1;                         \
130
        rs6000_spe_abi = 1;                     \
131
        rs6000_float_gprs = 1;                  \
132
      }                                         \
133
                                                \
134
  if (!g_switch_set)                            \
135
    g_switch_value = SDATA_DEFAULT_SIZE;        \
136
  VXWORKS_OVERRIDE_OPTIONS;                     \
137
  } while (0)
138
 
139
/* No _mcount profiling on VxWorks.  */
140
#undef FUNCTION_PROFILER
141
#define FUNCTION_PROFILER(FILE,LABELNO) VXWORKS_FUNCTION_PROFILER(FILE,LABELNO)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.