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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [config/] [arm/] [bpabi.h] - Blame information for rev 709

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 709 jeremybenn
/* Configuration file for ARM BPABI targets.
2
   Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010
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
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
/* Use the AAPCS ABI by default.  */
23
#define ARM_DEFAULT_ABI ARM_ABI_AAPCS
24
 
25
/* Assume that AAPCS ABIs should adhere to the full BPABI.  */
26
#define TARGET_BPABI (TARGET_AAPCS_BASED)
27
 
28
/* BPABI targets use EABI frame unwinding tables.  */
29
#undef ARM_UNWIND_INFO
30
#define ARM_UNWIND_INFO 1
31
 
32
/* Section 4.1 of the AAPCS requires the use of VFP format.  */
33
#undef  FPUTYPE_DEFAULT
34
#define FPUTYPE_DEFAULT "vfp"
35
 
36
/* TARGET_BIG_ENDIAN_DEFAULT is set in
37
   config.gcc for big endian configurations.  */
38
#if TARGET_BIG_ENDIAN_DEFAULT
39
#define TARGET_ENDIAN_DEFAULT MASK_BIG_END
40
#else
41
#define TARGET_ENDIAN_DEFAULT 0
42
#endif
43
 
44
/* EABI targets should enable interworking by default.  */
45
#undef  TARGET_DEFAULT
46
#define TARGET_DEFAULT (MASK_INTERWORK | TARGET_ENDIAN_DEFAULT)
47
 
48
/* The ARM BPABI functions return a boolean; they use no special
49
   calling convention.  */
50
#define FLOAT_LIB_COMPARE_RETURNS_BOOL(MODE, COMPARISON) TARGET_BPABI
51
 
52
/* The BPABI integer comparison routines return { -1, 0, 1 }.  */
53
#define TARGET_LIB_INT_CMP_BIASED !TARGET_BPABI
54
 
55
#define TARGET_FIX_V4BX_SPEC " %{mcpu=arm8|mcpu=arm810|mcpu=strongarm*"\
56
  "|march=armv4|mcpu=fa526|mcpu=fa626:--fix-v4bx}"
57
 
58
#define BE8_LINK_SPEC \
59
  " %{mbig-endian:%{march=armv7-a|mcpu=cortex-a5        \
60
   |mcpu=cortex-a7                                      \
61
   |mcpu=cortex-a8|mcpu=cortex-a9|mcpu=cortex-a15       \
62
   |mcpu=generic-armv7-a                                \
63
   |march=armv7-m|mcpu=cortex-m3                        \
64
   |march=armv7e-m|mcpu=cortex-m4                       \
65
   |march=armv6-m|mcpu=cortex-m0                        \
66
   :%{!r:--be8}}}"
67
 
68
/* Tell the assembler to build BPABI binaries.  */
69
#undef  SUBTARGET_EXTRA_ASM_SPEC
70
#define SUBTARGET_EXTRA_ASM_SPEC \
71
  "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu;:-meabi=5}" TARGET_FIX_V4BX_SPEC
72
 
73
#ifndef SUBTARGET_EXTRA_LINK_SPEC
74
#define SUBTARGET_EXTRA_LINK_SPEC ""
75
#endif
76
 
77
/* The generic link spec in elf.h does not support shared libraries.  */
78
#define BPABI_LINK_SPEC \
79
  "%{mbig-endian:-EB} %{mlittle-endian:-EL} "           \
80
  "%{static:-Bstatic} %{shared:-shared} %{symbolic:-Bsymbolic} "        \
81
  "-X" SUBTARGET_EXTRA_LINK_SPEC TARGET_FIX_V4BX_SPEC BE8_LINK_SPEC
82
 
83
#undef  LINK_SPEC
84
#define LINK_SPEC BPABI_LINK_SPEC
85
 
86
/* The BPABI requires that we always use an out-of-line implementation
87
   of RTTI comparison, even if the target supports weak symbols,
88
   because the same object file might be used on a target that does
89
   not support merging symbols across DLL boundaries.  This macro is
90
   broken out separately so that it can be used within
91
   TARGET_OS_CPP_BUILTINS in configuration files for systems based on
92
   the BPABI.  */
93
#define TARGET_BPABI_CPP_BUILTINS()                     \
94
  do                                                    \
95
    {                                                   \
96
      builtin_define ("__GXX_TYPEINFO_EQUALITY_INLINE=0");      \
97
    }                                                   \
98
  while (false)
99
 
100
#undef TARGET_OS_CPP_BUILTINS
101
#define TARGET_OS_CPP_BUILTINS() \
102
  TARGET_BPABI_CPP_BUILTINS()
103
 
104
/* The BPABI specifies the use of .{init,fini}_array.  Therefore, we
105
   do not want GCC to put anything into the .{init,fini} sections.  */
106
#undef INIT_SECTION_ASM_OP
107
#undef FINI_SECTION_ASM_OP
108
#define INIT_ARRAY_SECTION_ASM_OP ARM_EABI_CTORS_SECTION_OP
109
#define FINI_ARRAY_SECTION_ASM_OP ARM_EABI_DTORS_SECTION_OP
110
 
111
/* The legacy _mcount implementation assumes r11 points to a
112
    4-word APCS frame.  This is generally not true for EABI targets,
113
    particularly not in Thumb mode.  We assume the mcount
114
    implementation does not require a counter variable (No Counter).
115
    Note that __gnu_mcount_nc will be entered with a misaligned stack.
116
    This is OK because it uses a special calling convention anyway.  */
117
 
118
#undef  NO_PROFILE_COUNTERS
119
#define NO_PROFILE_COUNTERS 1
120
#undef  ARM_FUNCTION_PROFILER
121
#define ARM_FUNCTION_PROFILER(STREAM, LABELNO)                          \
122
{                                                                       \
123
  fprintf (STREAM, "\tpush\t{lr}\n");                                   \
124
  fprintf (STREAM, "\tbl\t__gnu_mcount_nc\n");                          \
125
}
126
 
127
#undef SUBTARGET_FRAME_POINTER_REQUIRED
128
#define SUBTARGET_FRAME_POINTER_REQUIRED 0
129
 
130
/* __gnu_mcount_nc restores the original LR value before returning.  Ensure
131
   that there is no unnecessary hook set up.  */
132
#undef PROFILE_HOOK

powered by: WebSVN 2.1.0

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