1# $FreeBSD$ 2 3CRTARCH= ${MACHINE_CPUARCH:C/amd64/x86_64/} 4 5CRTSRC= ${SRCTOP}/contrib/compiler-rt/lib/builtins 6 7.PATH: ${CRTSRC}/${CRTARCH} 8.PATH: ${CRTSRC} 9 10SRCF+= absvdi2 11SRCF+= absvsi2 12SRCF+= absvti2 13SRCF+= addvdi3 14SRCF+= addvsi3 15SRCF+= addvti3 16SRCF+= apple_versioning 17SRCF+= ashldi3 18SRCF+= ashlti3 19SRCF+= ashrdi3 20SRCF+= ashrti3 21SRCF+= clear_cache 22SRCF+= clzdi2 23SRCF+= clzsi2 24SRCF+= clzti2 25SRCF+= cmpdi2 26SRCF+= cmpti2 27SRCF+= ctzdi2 28SRCF+= ctzsi2 29SRCF+= ctzti2 30SRCF+= divdc3 31SRCF+= divdi3 32SRCF+= divmoddi4 33SRCF+= divmodsi4 34SRCF+= divsc3 35SRCF+= divsi3 36SRCF+= divtc3 37SRCF+= divti3 38SRCF+= divxc3 39SRCF+= enable_execute_stack 40SRCF+= eprintf 41SRCF+= extendhfsf2 42SRCF+= ffsdi2 43SRCF+= ffssi2 44SRCF+= ffsti2 45SRCF+= fixdfdi 46SRCF+= fixdfti 47SRCF+= fixsfdi 48SRCF+= fixsfti 49SRCF+= fixunsdfdi 50SRCF+= fixunsdfsi 51SRCF+= fixunsdfti 52SRCF+= fixunssfdi 53SRCF+= fixunssfsi 54SRCF+= fixunssfti 55SRCF+= fixunsxfdi 56SRCF+= fixunsxfsi 57SRCF+= fixunsxfti 58SRCF+= fixxfdi 59SRCF+= fixxfti 60SRCF+= floatdidf 61SRCF+= floatdisf 62SRCF+= floatditf 63SRCF+= floatdixf 64SRCF+= floatsitf 65SRCF+= floattidf 66SRCF+= floattisf 67SRCF+= floattixf 68SRCF+= floatundidf 69SRCF+= floatundisf 70SRCF+= floatunditf 71SRCF+= floatundixf 72SRCF+= floatunsidf 73SRCF+= floatunsisf 74SRCF+= floatuntidf 75SRCF+= floatuntisf 76SRCF+= floatuntixf 77SRCF+= gcc_personality_v0 78SRCF+= int_util 79SRCF+= lshrdi3 80SRCF+= lshrti3 81SRCF+= moddi3 82SRCF+= modsi3 83SRCF+= modti3 84SRCF+= muldc3 85SRCF+= muldi3 86SRCF+= mulodi4 87SRCF+= mulosi4 88SRCF+= muloti4 89SRCF+= mulsc3 90SRCF+= multi3 91SRCF+= mulvdi3 92SRCF+= mulvsi3 93SRCF+= mulvti3 94SRCF+= multc3 95SRCF+= mulxc3 96SRCF+= negdf2 97SRCF+= negdi2 98SRCF+= negsf2 99SRCF+= negti2 100SRCF+= negvdi2 101SRCF+= negvsi2 102SRCF+= negvti2 103SRCF+= paritydi2 104SRCF+= paritysi2 105SRCF+= parityti2 106SRCF+= popcountdi2 107SRCF+= popcountsi2 108SRCF+= popcountti2 109SRCF+= powidf2 110SRCF+= powisf2 111SRCF+= powitf2 112SRCF+= powixf2 113SRCF+= subvdi3 114SRCF+= subvsi3 115SRCF+= subvti3 116SRCF+= trampoline_setup 117SRCF+= truncdfhf2 118SRCF+= truncsfhf2 119SRCF+= ucmpdi2 120SRCF+= ucmpti2 121SRCF+= udivdi3 122SRCF+= udivmoddi4 123SRCF+= udivmodsi4 124SRCF+= udivmodti4 125SRCF+= udivsi3 126SRCF+= udivti3 127SRCF+= umoddi3 128SRCF+= umodsi3 129SRCF+= umodti3 130 131# __cpu_model support, only used on x86 132.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" 133SRCF+= cpu_model 134.endif 135 136# 137# 128-bit quad precision long double support, 138# only used on some architectures. 139# 140.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "riscv" 141SRCF+= addtf3 142SRCF+= comparetf2 143SRCF+= divtf3 144SRCF+= extenddftf2 145SRCF+= extendsftf2 146SRCF+= fixtfdi 147SRCF+= fixtfsi 148SRCF+= fixtfti 149SRCF+= fixunstfdi 150SRCF+= fixunstfsi 151SRCF+= fixunstfti 152SRCF+= floatunsitf 153SRCF+= multf3 154SRCF+= subtf3 155SRCF+= trunctfdf2 156SRCF+= trunctfsf2 157.endif 158 159# These are already shipped by libc.a on some architectures. 160.if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips" && \ 161 ${MACHINE_CPUARCH} != "riscv" 162SRCF+= adddf3 163SRCF+= addsf3 164SRCF+= divdf3 165SRCF+= divsf3 166SRCF+= extendsfdf2 167SRCF+= fixdfsi 168SRCF+= fixsfsi 169SRCF+= floatsidf 170SRCF+= floatsisf 171SRCF+= muldf3 172SRCF+= mulsf3 173SRCF+= subdf3 174SRCF+= subsf3 175SRCF+= truncdfsf2 176.endif 177 178.if ${MACHINE_CPUARCH} != "arm" 179SRCF+= comparedf2 180SRCF+= comparesf2 181.endif 182 183# FreeBSD-specific atomic intrinsics. 184.if ${MACHINE_CPUARCH} == "arm" 185.PATH: ${SRCTOP}/sys/arm/arm 186 187SRCF+= stdatomic 188CFLAGS+= -DEMIT_SYNC_ATOMICS 189.elif ${MACHINE_CPUARCH} == "mips" 190.PATH: ${SRCTOP}/sys/mips/mips 191 192SRCF+= stdatomic 193.endif 194 195.for file in ${SRCF} 196.if ${MACHINE_ARCH:Marmv6*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") \ 197 && exists(${CRTSRC}/${CRTARCH}/${file}vfp.S) 198SRCS+= ${file}vfp.S 199. elif exists(${CRTSRC}/${CRTARCH}/${file}.S) 200SRCS+= ${file}.S 201. else 202SRCS+= ${file}.c 203. endif 204.endfor 205 206.if ${MACHINE_CPUARCH} == "arm" 207SRCS+= aeabi_div0.c 208SRCS+= aeabi_idivmod.S 209SRCS+= aeabi_ldivmod.S 210SRCS+= aeabi_memcmp.S 211SRCS+= aeabi_memcpy.S 212SRCS+= aeabi_memmove.S 213SRCS+= aeabi_memset.S 214SRCS+= aeabi_uidivmod.S 215SRCS+= aeabi_uldivmod.S 216SRCS+= bswapdi2.S 217SRCS+= bswapsi2.S 218SRCS+= switch16.S 219SRCS+= switch32.S 220SRCS+= switch8.S 221SRCS+= switchu8.S 222SRCS+= sync_synchronize.S 223.endif 224 225# On some archs GCC-6.3 requires bswap32 built-in. 226.if ${MACHINE_CPUARCH} == "mips" || ${MACHINE_CPUARCH} == "sparc64" 227SRCS+= bswapdi2.c 228SRCS+= bswapsi2.c 229.endif 230