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