OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

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

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

Line No. Rev Author Line
1 38 julius
/* Definitions of target machine for GNU compiler.  Vxworks PowerPC version.
2
   Copyright (C) 1996, 2000, 2002, 2003, 2004, 2005, 2007
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=603 : -DCPU=PPC603  ; \
72
     mcpu=604 : -DCPU=PPC604  ; \
73
     mcpu=860 : -DCPU=PPC860  ; \
74
     mcpu=8540: -DCPU=PPC85XX ; \
75
              : -DCPU=PPC604  }}" \
76
VXWORKS_ADDITIONAL_CPP_SPEC
77
 
78
#define CC1_SPEC                                                \
79
"%{G*} %{mno-sdata:-msdata=none} %{msdata:-msdata=default}      \
80
 %{mlittle|mlittle-endian:-mstrict-align}                       \
81
 %{profile: -p}         \
82
 %{fvec:-maltivec} %{fvec-eabi:-maltivec -mabi=altivec}"
83
 
84
#define ASM_SPEC \
85
"%(asm_cpu) \
86
 %{.s: %{mregnames} %{mno-regnames}} %{.S: %{mregnames} %{mno-regnames}} \
87
 %{v:-v} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} \
88
 %{mrelocatable} %{mrelocatable-lib} %{fpic:-K PIC} %{fPIC:-K PIC} -mbig"
89
 
90
#undef  LIB_SPEC
91
#define LIB_SPEC VXWORKS_LIB_SPEC
92
#undef  LINK_SPEC
93
#define LINK_SPEC VXWORKS_LINK_SPEC
94
#undef  STARTFILE_SPEC
95
#define STARTFILE_SPEC VXWORKS_STARTFILE_SPEC
96
#undef  ENDFILE_SPEC
97
#define ENDFILE_SPEC VXWORKS_ENDFILE_SPEC
98
 
99
/* There is no default multilib.  */
100
#undef MULTILIB_DEFAULTS
101
 
102
#undef TARGET_DEFAULT
103
#define TARGET_DEFAULT \
104
  (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_EABI | MASK_STRICT_ALIGN)
105
 
106
#undef PROCESSOR_DEFAULT
107
#define PROCESSOR_DEFAULT PROCESSOR_PPC604
108
 
109
/* Nor sdata, for kernel mode.  We use this in
110
   SUBSUBTARGET_INITIALIZE_OPTIONS, after rs6000_rtp has been initialized.  */
111
#undef SDATA_DEFAULT_SIZE
112
#define SDATA_DEFAULT_SIZE (TARGET_VXWORKS_RTP ? 8 : 0)
113
 
114
#undef  STACK_BOUNDARY
115
#define STACK_BOUNDARY (16*BITS_PER_UNIT)
116
/* Override sysv4.h, reset to the default.  */
117
#undef  PREFERRED_STACK_BOUNDARY
118
 
119
/* Enable SPE */
120
#undef TARGET_SPE_ABI
121
#undef TARGET_SPE
122
#undef TARGET_E500
123
#undef TARGET_ISEL
124
#undef TARGET_FPRS
125
 
126
#define TARGET_SPE_ABI rs6000_spe_abi
127
#define TARGET_SPE rs6000_spe
128
#define TARGET_E500 (rs6000_cpu == PROCESSOR_PPC8540)
129
#define TARGET_ISEL rs6000_isel
130
#define TARGET_FPRS (!rs6000_float_gprs)
131
 
132
/* Make -mcpu=8540 imply SPE.  ISEL is automatically enabled, the
133
   others must be done by hand.  Handle -mrtp.  Disable -fPIC
134
   for -mrtp - the VxWorks PIC model is not compatible with it.  */
135
#undef SUBSUBTARGET_OVERRIDE_OPTIONS
136
#define SUBSUBTARGET_OVERRIDE_OPTIONS           \
137
  do {                                          \
138
    if (TARGET_E500)                            \
139
      {                                         \
140
        rs6000_spe = 1;                         \
141
        rs6000_spe_abi = 1;                     \
142
        rs6000_float_gprs = 1;                  \
143
      }                                         \
144
                                                \
145
  if (!g_switch_set)                            \
146
    g_switch_value = SDATA_DEFAULT_SIZE;        \
147
  VXWORKS_OVERRIDE_OPTIONS;                     \
148
  } while (0)
149
 
150
/* No _mcount profiling on VxWorks.  */
151
#undef FUNCTION_PROFILER
152
#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.