1040b3049SEd Maste# $FreeBSD$ 2040b3049SEd Maste 3040b3049SEd MasteCRTARCH= ${MACHINE_CPUARCH:C/amd64/x86_64/} 4040b3049SEd Maste 5040b3049SEd MasteCRTSRC= ${SRCTOP}/contrib/compiler-rt/lib/builtins 6040b3049SEd Maste 7040b3049SEd Maste.PATH: ${CRTSRC}/${CRTARCH} 8040b3049SEd Maste.PATH: ${CRTSRC} 9040b3049SEd Maste 10040b3049SEd MasteSRCF+= absvdi2 11040b3049SEd MasteSRCF+= absvsi2 12040b3049SEd MasteSRCF+= absvti2 13040b3049SEd MasteSRCF+= addvdi3 14040b3049SEd MasteSRCF+= addvsi3 15040b3049SEd MasteSRCF+= addvti3 16040b3049SEd MasteSRCF+= apple_versioning 17040b3049SEd MasteSRCF+= ashldi3 18040b3049SEd MasteSRCF+= ashlti3 19040b3049SEd MasteSRCF+= ashrdi3 20040b3049SEd MasteSRCF+= ashrti3 21040b3049SEd MasteSRCF+= clear_cache 22040b3049SEd MasteSRCF+= clzdi2 23040b3049SEd MasteSRCF+= clzsi2 24040b3049SEd MasteSRCF+= clzti2 25040b3049SEd MasteSRCF+= cmpdi2 26040b3049SEd MasteSRCF+= cmpti2 27040b3049SEd MasteSRCF+= ctzdi2 28040b3049SEd MasteSRCF+= ctzsi2 29040b3049SEd MasteSRCF+= ctzti2 30040b3049SEd MasteSRCF+= divdc3 31040b3049SEd MasteSRCF+= divdi3 32040b3049SEd MasteSRCF+= divmoddi4 33040b3049SEd MasteSRCF+= divmodsi4 34040b3049SEd MasteSRCF+= divsc3 35040b3049SEd MasteSRCF+= divtc3 36040b3049SEd MasteSRCF+= divti3 37040b3049SEd MasteSRCF+= divxc3 38040b3049SEd MasteSRCF+= enable_execute_stack 39040b3049SEd MasteSRCF+= eprintf 40040b3049SEd MasteSRCF+= extendhfsf2 41040b3049SEd MasteSRCF+= ffsdi2 42289fa303SDimitry AndricSRCF+= ffssi2 43040b3049SEd MasteSRCF+= ffsti2 44040b3049SEd MasteSRCF+= fixdfdi 45040b3049SEd MasteSRCF+= fixdfti 46040b3049SEd MasteSRCF+= fixsfdi 47040b3049SEd MasteSRCF+= fixsfti 48040b3049SEd MasteSRCF+= fixunsdfdi 49040b3049SEd MasteSRCF+= fixunsdfsi 50040b3049SEd MasteSRCF+= fixunsdfti 51040b3049SEd MasteSRCF+= fixunssfdi 52040b3049SEd MasteSRCF+= fixunssfsi 53040b3049SEd MasteSRCF+= fixunssfti 54040b3049SEd MasteSRCF+= fixunsxfdi 55040b3049SEd MasteSRCF+= fixunsxfsi 56040b3049SEd MasteSRCF+= fixunsxfti 57040b3049SEd MasteSRCF+= fixxfdi 58040b3049SEd MasteSRCF+= fixxfti 59040b3049SEd MasteSRCF+= floatdidf 60040b3049SEd MasteSRCF+= floatdisf 61040b3049SEd MasteSRCF+= floatditf 62040b3049SEd MasteSRCF+= floatdixf 63040b3049SEd MasteSRCF+= floatsitf 64040b3049SEd MasteSRCF+= floattidf 65040b3049SEd MasteSRCF+= floattisf 66040b3049SEd MasteSRCF+= floattixf 67040b3049SEd MasteSRCF+= floatundidf 68040b3049SEd MasteSRCF+= floatundisf 69040b3049SEd MasteSRCF+= floatunditf 70040b3049SEd MasteSRCF+= floatundixf 71040b3049SEd MasteSRCF+= floatunsidf 72040b3049SEd MasteSRCF+= floatunsisf 73040b3049SEd MasteSRCF+= floatuntidf 74040b3049SEd MasteSRCF+= floatuntisf 75040b3049SEd MasteSRCF+= floatuntixf 76040b3049SEd MasteSRCF+= gcc_personality_v0 77040b3049SEd MasteSRCF+= int_util 78040b3049SEd MasteSRCF+= lshrdi3 79040b3049SEd MasteSRCF+= lshrti3 80040b3049SEd MasteSRCF+= moddi3 81040b3049SEd MasteSRCF+= modti3 82040b3049SEd MasteSRCF+= muldc3 83040b3049SEd MasteSRCF+= muldi3 84040b3049SEd MasteSRCF+= mulodi4 85040b3049SEd MasteSRCF+= mulosi4 86040b3049SEd MasteSRCF+= muloti4 87040b3049SEd MasteSRCF+= mulsc3 88040b3049SEd MasteSRCF+= multi3 89040b3049SEd MasteSRCF+= mulvdi3 90040b3049SEd MasteSRCF+= mulvsi3 91040b3049SEd MasteSRCF+= mulvti3 92040b3049SEd MasteSRCF+= multc3 93040b3049SEd MasteSRCF+= mulxc3 94040b3049SEd MasteSRCF+= negdf2 95040b3049SEd MasteSRCF+= negdi2 96040b3049SEd MasteSRCF+= negsf2 97040b3049SEd MasteSRCF+= negti2 98040b3049SEd MasteSRCF+= negvdi2 99040b3049SEd MasteSRCF+= negvsi2 100040b3049SEd MasteSRCF+= negvti2 101040b3049SEd MasteSRCF+= paritydi2 102040b3049SEd MasteSRCF+= paritysi2 103040b3049SEd MasteSRCF+= parityti2 104040b3049SEd MasteSRCF+= popcountdi2 105040b3049SEd MasteSRCF+= popcountsi2 106040b3049SEd MasteSRCF+= popcountti2 107040b3049SEd MasteSRCF+= powidf2 108040b3049SEd MasteSRCF+= powisf2 109040b3049SEd MasteSRCF+= powitf2 110040b3049SEd MasteSRCF+= powixf2 111040b3049SEd MasteSRCF+= subvdi3 112040b3049SEd MasteSRCF+= subvsi3 113040b3049SEd MasteSRCF+= subvti3 114040b3049SEd MasteSRCF+= trampoline_setup 115040b3049SEd MasteSRCF+= truncdfhf2 116040b3049SEd MasteSRCF+= truncsfhf2 117040b3049SEd MasteSRCF+= ucmpdi2 118040b3049SEd MasteSRCF+= ucmpti2 119040b3049SEd MasteSRCF+= udivdi3 120040b3049SEd MasteSRCF+= udivmoddi4 121040b3049SEd MasteSRCF+= udivmodsi4 122040b3049SEd MasteSRCF+= udivmodti4 123040b3049SEd MasteSRCF+= udivti3 124040b3049SEd MasteSRCF+= umoddi3 125040b3049SEd MasteSRCF+= umodti3 126040b3049SEd Maste 127335bcabeSEd Maste# __cpu_model support, only used on x86 128335bcabeSEd Maste.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" 129335bcabeSEd MasteSRCF+= cpu_model 130335bcabeSEd Maste.endif 131335bcabeSEd Maste 1322ad1d09fSRuslan Bukin# 1332ad1d09fSRuslan Bukin# 128-bit quad precision long double support, 1347804dd52SRuslan Bukin# only used on some architectures. 1352ad1d09fSRuslan Bukin# 1362ad1d09fSRuslan Bukin.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "riscv" 137040b3049SEd MasteSRCF+= addtf3 138040b3049SEd MasteSRCF+= comparetf2 139040b3049SEd MasteSRCF+= divtf3 140040b3049SEd MasteSRCF+= extenddftf2 141040b3049SEd MasteSRCF+= extendsftf2 142040b3049SEd MasteSRCF+= fixtfdi 143040b3049SEd MasteSRCF+= fixtfsi 144040b3049SEd MasteSRCF+= fixtfti 145040b3049SEd MasteSRCF+= fixunstfdi 146040b3049SEd MasteSRCF+= fixunstfsi 147040b3049SEd MasteSRCF+= fixunstfti 148040b3049SEd MasteSRCF+= floatunsitf 149040b3049SEd MasteSRCF+= multf3 150040b3049SEd MasteSRCF+= subtf3 151040b3049SEd MasteSRCF+= trunctfdf2 152040b3049SEd MasteSRCF+= trunctfsf2 153040b3049SEd Maste.endif 154040b3049SEd Maste 1557804dd52SRuslan Bukin# These are already shipped by libc.a on some architectures. 1567804dd52SRuslan Bukin.if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips" && \ 1577804dd52SRuslan Bukin ${MACHINE_CPUARCH} != "riscv" 158040b3049SEd MasteSRCF+= adddf3 159040b3049SEd MasteSRCF+= addsf3 160040b3049SEd MasteSRCF+= divdf3 161040b3049SEd MasteSRCF+= divsf3 162040b3049SEd MasteSRCF+= extendsfdf2 163040b3049SEd MasteSRCF+= fixdfsi 164040b3049SEd MasteSRCF+= fixsfsi 165040b3049SEd MasteSRCF+= floatsidf 166040b3049SEd MasteSRCF+= floatsisf 167040b3049SEd MasteSRCF+= muldf3 168040b3049SEd MasteSRCF+= mulsf3 169040b3049SEd MasteSRCF+= subdf3 170040b3049SEd MasteSRCF+= subsf3 171040b3049SEd MasteSRCF+= truncdfsf2 172040b3049SEd Maste.endif 173040b3049SEd Maste 174040b3049SEd Maste.if ${MACHINE_CPUARCH} != "arm" 175040b3049SEd MasteSRCF+= comparedf2 176040b3049SEd MasteSRCF+= comparesf2 177040b3049SEd Maste.endif 178040b3049SEd Maste 179040b3049SEd Maste.if ${MACHINE_CPUARCH} != "mips" 180040b3049SEd MasteSRCF+= divsi3 181040b3049SEd MasteSRCF+= modsi3 182040b3049SEd MasteSRCF+= udivsi3 183040b3049SEd MasteSRCF+= umodsi3 184040b3049SEd Maste.endif 185040b3049SEd Maste 186040b3049SEd Maste# FreeBSD-specific atomic intrinsics. 187*b53a8df3SWarner Losh.if ${MACHINE_CPUARCH} == "arm" 188040b3049SEd Maste.PATH: ${SRCTOP}/sys/arm/arm 189040b3049SEd Maste 190040b3049SEd MasteSRCF+= stdatomic 191040b3049SEd MasteCFLAGS+= -DEMIT_SYNC_ATOMICS 192040b3049SEd Maste.elif ${MACHINE_CPUARCH} == "mips" 193040b3049SEd Maste.PATH: ${SRCTOP}/sys/mips/mips 194040b3049SEd Maste 195040b3049SEd MasteSRCF+= stdatomic 196040b3049SEd Maste.endif 197040b3049SEd Maste 198040b3049SEd Maste.for file in ${SRCF} 199040b3049SEd Maste.if ${MACHINE_ARCH:Marmv6*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") \ 200040b3049SEd Maste && exists(${CRTSRC}/${CRTARCH}/${file}vfp.S) 201040b3049SEd MasteSRCS+= ${file}vfp.S 202040b3049SEd Maste. elif exists(${CRTSRC}/${CRTARCH}/${file}.S) 203040b3049SEd MasteSRCS+= ${file}.S 204040b3049SEd Maste. else 205040b3049SEd MasteSRCS+= ${file}.c 206040b3049SEd Maste. endif 207040b3049SEd Maste.endfor 208040b3049SEd Maste 209040b3049SEd Maste.if ${MACHINE_CPUARCH} == "arm" 210040b3049SEd MasteSRCS+= aeabi_div0.c 211040b3049SEd MasteSRCS+= aeabi_idivmod.S 212040b3049SEd MasteSRCS+= aeabi_ldivmod.S 213040b3049SEd MasteSRCS+= aeabi_memcmp.S 214040b3049SEd MasteSRCS+= aeabi_memcpy.S 215040b3049SEd MasteSRCS+= aeabi_memmove.S 216040b3049SEd MasteSRCS+= aeabi_memset.S 217040b3049SEd MasteSRCS+= aeabi_uidivmod.S 218040b3049SEd MasteSRCS+= aeabi_uldivmod.S 219040b3049SEd MasteSRCS+= bswapdi2.S 220040b3049SEd MasteSRCS+= bswapsi2.S 221040b3049SEd MasteSRCS+= switch16.S 222040b3049SEd MasteSRCS+= switch32.S 223040b3049SEd MasteSRCS+= switch8.S 224040b3049SEd MasteSRCS+= switchu8.S 225040b3049SEd MasteSRCS+= sync_synchronize.S 226040b3049SEd Maste.endif 22766ed7741SAdrian Chadd 228d9ad2b35SEd Maste# On some archs GCC-6.3 requires bswap32 built-in. 229d9ad2b35SEd Maste.if ${MACHINE_CPUARCH} == "mips" || ${MACHINE_CPUARCH} == "sparc64" 23066ed7741SAdrian ChaddSRCS+= bswapdi2.c 23166ed7741SAdrian ChaddSRCS+= bswapsi2.c 23266ed7741SAdrian Chadd.endif 233