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