Mercurial > hg > CbC > CbC_gcc
annotate gcc/config/arm/bpabi.h @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | f6334be47118 |
children | 84e7813d76e9 |
rev | line source |
---|---|
0 | 1 /* Configuration file for ARM BPABI targets. |
111 | 2 Copyright (C) 2004-2017 Free Software Foundation, Inc. |
0 | 3 Contributed by CodeSourcery, LLC |
4 | |
5 This file is part of GCC. | |
6 | |
7 GCC is free software; you can redistribute it and/or modify it | |
8 under the terms of the GNU General Public License as published | |
9 by the Free Software Foundation; either version 3, or (at your | |
10 option) any later version. | |
11 | |
12 GCC is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public | |
15 License for more details. | |
16 | |
111 | 17 Under Section 7 of GPL version 3, you are granted additional |
18 permissions described in the GCC Runtime Library Exception, version | |
19 3.1, as published by the Free Software Foundation. | |
20 | |
21 You should have received a copy of the GNU General Public License and | |
22 a copy of the GCC Runtime Library Exception along with this program; | |
23 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
0 | 24 <http://www.gnu.org/licenses/>. */ |
25 | |
26 /* Use the AAPCS ABI by default. */ | |
27 #define ARM_DEFAULT_ABI ARM_ABI_AAPCS | |
28 | |
111 | 29 /* Assume that AAPCS ABIs should adhere to the full BPABI. */ |
0 | 30 #define TARGET_BPABI (TARGET_AAPCS_BASED) |
31 | |
32 /* BPABI targets use EABI frame unwinding tables. */ | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
33 #undef ARM_UNWIND_INFO |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
34 #define ARM_UNWIND_INFO 1 |
0 | 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 | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
55 #define TARGET_FIX_V4BX_SPEC " %{mcpu=arm8|mcpu=arm810|mcpu=strongarm*"\ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
56 "|march=armv4|mcpu=fa526|mcpu=fa626:--fix-v4bx}" |
0 | 57 |
111 | 58 #define BE8_LINK_SPEC \ |
59 "%{!r:%{!mbe32:%:be8_linkopt(%{mlittle-endian:little}" \ | |
60 " %{mbig-endian:big}" \ | |
61 " %{mbe8:be8}" \ | |
62 " %{march=*:arch %*})}}" | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
63 |
0 | 64 /* Tell the assembler to build BPABI binaries. */ |
65 #undef SUBTARGET_EXTRA_ASM_SPEC | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
66 #define SUBTARGET_EXTRA_ASM_SPEC \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
67 "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu;:-meabi=5}" TARGET_FIX_V4BX_SPEC |
0 | 68 |
69 #ifndef SUBTARGET_EXTRA_LINK_SPEC | |
70 #define SUBTARGET_EXTRA_LINK_SPEC "" | |
71 #endif | |
72 | |
111 | 73 /* Split out the EABI common values so other targets can use it. */ |
74 #define EABI_LINK_SPEC \ | |
75 TARGET_FIX_V4BX_SPEC BE8_LINK_SPEC | |
76 | |
0 | 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} " \ | |
111 | 81 "-X" SUBTARGET_EXTRA_LINK_SPEC EABI_LINK_SPEC |
0 | 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 |