Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/arm/t-arm-elf @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | f6334be47118 |
children | 84e7813d76e9 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 # Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, | 1 # Copyright (C) 1998-2017 Free Software Foundation, Inc. |
2 # 2008, 2010 Free Software Foundation, Inc. | |
3 # | 2 # |
4 # This file is part of GCC. | 3 # This file is part of GCC. |
5 # | 4 # |
6 # GCC is free software; you can redistribute it and/or modify | 5 # GCC is free software; you can redistribute it and/or modify |
7 # it under the terms of the GNU General Public License as published by | 6 # it under the terms of the GNU General Public License as published by |
15 # | 14 # |
16 # You should have received a copy of the GNU General Public License | 15 # You should have received a copy of the GNU General Public License |
17 # along with GCC; see the file COPYING3. If not see | 16 # along with GCC; see the file COPYING3. If not see |
18 # <http://www.gnu.org/licenses/>. | 17 # <http://www.gnu.org/licenses/>. |
19 | 18 |
20 # For most CPUs we have an assembly soft-float implementations. | 19 # Build a very basic set of libraries that should cater for most cases. |
21 # However this is not true for ARMv6M. Here we want to use the soft-fp C | |
22 # implementation. The soft-fp code is only build for ARMv6M. This pulls | |
23 # in the asm implementation for other CPUs. | |
24 LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func \ | |
25 _call_via_rX _interwork_call_via_rX \ | |
26 _lshrdi3 _ashrdi3 _ashldi3 \ | |
27 _arm_negdf2 _arm_addsubdf3 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \ | |
28 _arm_fixdfsi _arm_fixunsdfsi \ | |
29 _arm_truncdfsf2 _arm_negsf2 _arm_addsubsf3 _arm_muldivsf3 \ | |
30 _arm_cmpsf2 _arm_unordsf2 _arm_fixsfsi _arm_fixunssfsi \ | |
31 _arm_floatdidf _arm_floatdisf _arm_floatundidf _arm_floatundisf \ | |
32 _clzsi2 _clzdi2 | |
33 | 20 |
34 MULTILIB_OPTIONS = marm/mthumb | 21 # Single-precision floating-point is NOT supported; we don't build a |
35 MULTILIB_DIRNAMES = arm thumb | 22 # suitable library for that. Use the rm-profile config in that case. |
23 | |
24 # PART 1 - Useful groups of options | |
25 | |
26 dp_fpus := vfp vfpv2 vfpv3 vfpv3-fp16 vfpv3-d16 vfpv3-d16-fp16 \ | |
27 neon neon-vfpv3 neon-fp16 vfpv4 neon-vfpv4 vfpv4-d16 \ | |
28 fpv5-d16 fp-armv8 neon-fp-armv8 crypto-neon-fp-armv8 \ | |
29 vfp3 | |
30 | |
31 sp_fpus := vfpv3xd vfpv3xd-fp16 fpv4-sp-d16 fpv5-sp-d16 | |
32 | |
33 v7a_fps := vfpv3 vfpv3-fp16 vfpv4 simd neon-fp16 neon-vfpv4 | |
34 v7ve_fps := vfpv3-d16 vfpv3 vfpv3-d16-fp16 vfpv3-fp16 vfpv4 neon \ | |
35 neon-fp16 simd | |
36 | |
37 # Not all these permutations exist for all architecture variants, but | |
38 # it seems to work ok. | |
39 v8_fps := simd fp16 crypto fp16+crypto | |
40 | |
41 # We don't do anything special with these. Pre-v4t probably doesn't work. | |
42 all_early_nofp := armv2 armv2a armv3 armv3m armv4 armv4t armv5 armv5t | |
43 | |
44 all_early_arch := armv5e armv5tej armv6 armv6j armv6k armv6z armv6kz \ | |
45 armv6zk armv6t2 iwmmxt iwmmxt2 | |
46 | |
47 all_v7_a_r := armv7-a armv7ve armv7-r | |
48 | |
49 all_v8_archs := armv8-a armv8-a+crc armv8.1-a armv8.2-a | |
50 | |
51 # No floating point variants, require thumb1 softfp | |
52 all_nofp_t := armv6-m armv6s-m armv8-m.base | |
53 | |
54 all_nofp_t2 := armv7-m | |
55 | |
56 all_sp_only := armv7e-m armv8-m.main | |
57 | |
58 MULTILIB_OPTIONS = | |
59 MULTILIB_DIRNAMES = | |
36 MULTILIB_EXCEPTIONS = | 60 MULTILIB_EXCEPTIONS = |
37 MULTILIB_MATCHES = | 61 MULTILIB_MATCHES = |
62 MULTILIB_REUSE = | |
38 | 63 |
39 #MULTILIB_OPTIONS += mcpu=fa526/mcpu=fa626/mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te | 64 # PART 2 - multilib build rules |
40 #MULTILIB_DIRNAMES += fa526 fa626 fa606te fa626te fmp626 fa726te | |
41 #MULTILIB_EXCEPTIONS += *mthumb*/*mcpu=fa526 *mthumb*/*mcpu=fa626 | |
42 | 65 |
43 #MULTILIB_OPTIONS += march=armv7 | 66 MULTILIB_OPTIONS += marm/mthumb |
44 #MULTILIB_DIRNAMES += thumb2 | 67 MULTILIB_DIRNAMES += arm thumb |
45 #MULTILIB_EXCEPTIONS += march=armv7* marm/*march=armv7* | |
46 #MULTILIB_MATCHES += march?armv7=march?armv7-a | |
47 #MULTILIB_MATCHES += march?armv7=march?armv7-r | |
48 #MULTILIB_MATCHES += march?armv7=march?armv7-m | |
49 #MULTILIB_MATCHES += march?armv7=mcpu?cortex-a8 | |
50 #MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4 | |
51 #MULTILIB_MATCHES += march?armv7=mcpu?cortex-m3 | |
52 | 68 |
53 # Not quite true. We can support hard-vfp calling in Thumb2, but how do we | 69 MULTILIB_OPTIONS += mfpu=auto |
54 # express that here? Also, we really need architecture v5e or later | 70 MULTILIB_DIRNAMES += autofp |
55 # (mcrr etc). | |
56 MULTILIB_OPTIONS += mfloat-abi=hard | |
57 MULTILIB_DIRNAMES += fpu | |
58 MULTILIB_EXCEPTIONS += *mthumb/*mfloat-abi=hard* | |
59 #MULTILIB_EXCEPTIONS += *mcpu=fa526/*mfloat-abi=hard* | |
60 #MULTILIB_EXCEPTIONS += *mcpu=fa626/*mfloat-abi=hard* | |
61 | 71 |
62 # MULTILIB_OPTIONS += mcpu=ep9312 | 72 MULTILIB_OPTIONS += march=armv5te+fp/march=armv7+fp |
63 # MULTILIB_DIRNAMES += ep9312 | 73 MULTILIB_DIRNAMES += v5te v7 |
64 # MULTILIB_EXCEPTIONS += *mthumb/*mcpu=ep9312* | |
65 # | |
66 # MULTILIB_OPTIONS += mlittle-endian/mbig-endian | |
67 # MULTILIB_DIRNAMES += le be | |
68 # MULTILIB_MATCHES += mbig-endian=mbe mlittle-endian=mle | |
69 # | |
70 # MULTILIB_OPTIONS += mhard-float/msoft-float | |
71 # MULTILIB_DIRNAMES += fpu soft | |
72 # MULTILIB_EXCEPTIONS += *mthumb/*mhard-float* | |
73 # | |
74 # MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork | |
75 # MULTILIB_DIRNAMES += normal interwork | |
76 # | |
77 # MULTILIB_OPTIONS += fno-leading-underscore/fleading-underscore | |
78 # MULTILIB_DIRNAMES += elf under | |
79 # | |
80 # MULTILIB_OPTIONS += mcpu=arm7 | |
81 # MULTILIB_DIRNAMES += nofmult | |
82 # MULTILIB_EXCEPTIONS += *mthumb*/*mcpu=arm7* | |
83 # # Note: the multilib_exceptions matches both -mthumb and | |
84 # # -mthumb-interwork | |
85 # # | |
86 # # We have to match all the arm cpu variants which do not have the | |
87 # # multiply instruction and treat them as if the user had specified | |
88 # # -mcpu=arm7. Note that in the following the ? is interpreted as | |
89 # # an = for the purposes of matching command line options. | |
90 # # FIXME: There ought to be a better way to do this. | |
91 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7d | |
92 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7di | |
93 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm70 | |
94 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm700 | |
95 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm700i | |
96 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm710 | |
97 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm710c | |
98 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7100 | |
99 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7500 | |
100 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7500fe | |
101 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm6 | |
102 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm60 | |
103 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm600 | |
104 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm610 | |
105 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm620 | |
106 | 74 |
107 EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o | 75 MULTILIB_OPTIONS += mfloat-abi=hard |
76 MULTILIB_DIRNAMES += fpu | |
108 | 77 |
109 # If EXTRA_MULTILIB_PARTS is not defined above then define EXTRA_PARTS here | 78 # Build a total of 4 library variants (base options plus the following): |
110 # EXTRA_PARTS = crtbegin.o crtend.o crti.o crtn.o | 79 MULTILIB_REQUIRED += mthumb |
80 MULTILIB_REQUIRED += marm/mfpu=auto/march=armv5te+fp/mfloat-abi=hard | |
81 MULTILIB_REQUIRED += mthumb/mfpu=auto/march=armv7+fp/mfloat-abi=hard | |
111 | 82 |
112 LIBGCC = stmp-multilib | 83 # PART 3 - Match rules |
113 INSTALL_LIBGCC = install-multilib | |
114 | 84 |
115 # Currently there is a bug somewhere in GCC's alias analysis | 85 # Map all supported FPUs onto mfpu=auto |
116 # or scheduling code that is breaking _fpmul_parts in fp-bit.c. | 86 MULTILIB_MATCHES += $(foreach FPU, $(dp_fpus), \ |
117 # Disabling function inlining is a workaround for this problem. | 87 mfpu?auto=mfpu?$(FPU)) |
118 TARGET_LIBGCC2_CFLAGS = -fno-inline | |
119 | 88 |
120 # Assemble startup files. | 89 MULTILIB_MATCHES += march?armv5te+fp=march?armv5te |
121 $(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES) | |
122 $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \ | |
123 -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/arm/crti.asm | |
124 | 90 |
125 $(T)crtn.o: $(srcdir)/config/arm/crtn.asm $(GCC_PASSES) | 91 MULTILIB_MATCHES += $(foreach ARCH, $(all_early_arch), \ |
126 $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \ | 92 march?armv5te+fp=march?$(ARCH) \ |
127 -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/arm/crtn.asm | 93 march?armv5te+fp=march?$(ARCH)+fp) |
128 | 94 |
95 MULTILIB_MATCHES += march?armv7+fp=march?armv7 | |
96 | |
97 MULTILIB_MATCHES += $(foreach FPARCH, $(v7a_fps), \ | |
98 march?armv7+fp=march?armv7-a+$(FPARCH)) | |
99 | |
100 MULTILIB_MATCHES += $(foreach FPARCH, $(v7ve_fps), \ | |
101 march?armv7+fp=march?armv7ve+$(FPARCH)) | |
102 | |
103 MULTILIB_MATCHES += $(foreach ARCH, $(all_v7_a_r), \ | |
104 march?armv7+fp=march?$(ARCH) \ | |
105 march?armv7+fp=march?$(ARCH)+fp) | |
106 | |
107 MULTILIB_MATCHES += $(foreach ARCH, $(all_v8_archs), \ | |
108 march?armv7+fp=march?$(ARCH) \ | |
109 $(foreach FPARCH, $(v8_fps), \ | |
110 march?armv7+fp=march?$(ARCH)+$(FPARCH))) | |
111 | |
112 MULTILIB_MATCHES += $(foreach ARCH, armv7e-m armv8-m.mainline, \ | |
113 march?armv7+fp=march?$(ARCH)+fp.dp) | |
114 | |
115 # PART 4 - Reuse rules | |
116 | |
117 MULTILIB_REUSE += mthumb=mthumb/mfpu.auto | |
118 MULTILIB_REUSE += mthumb=mthumb/mfpu.auto/march.armv5te+fp | |
119 MULTILIB_REUSE += mthumb=mthumb/march.armv5te+fp | |
120 MULTILIB_REUSE += marm/mfpu.auto/march.armv5te+fp/mfloat-abi.hard=marm/march.armv5te+fp/mfloat-abi.hard | |
121 MULTILIB_REUSE += marm/mfpu.auto/march.armv5te+fp/mfloat-abi.hard=march.armv5te+fp/mfloat-abi.hard | |
122 MULTILIB_REUSE += marm/mfpu.auto/march.armv5te+fp/mfloat-abi.hard=mfpu.auto/march.armv5te+fp/mfloat-abi.hard | |
123 MULTILIB_REUSE += mthumb/mfpu.auto/march.armv7+fp/mfloat-abi.hard=mthumb/march.armv7+fp/mfloat-abi.hard | |
124 MULTILIB_REUSE += mthumb/mfpu.auto/march.armv7+fp/mfloat-abi.hard=mfpu.auto/march.armv7+fp/mfloat-abi.hard | |
125 MULTILIB_REUSE += mthumb/mfpu.auto/march.armv7+fp/mfloat-abi.hard=march.armv7+fp/mfloat-abi.hard |