3 CRTARCH= ${MACHINE_CPUARCH:C/amd64/x86_64/}
5 CRTSRC= ${SRCTOP}/contrib/llvm-project/compiler-rt/lib/builtins
7 .PATH: ${CRTSRC}/${CRTARCH}
16 SRCF+= apple_versioning
39 SRCF+= enable_execute_stack
70 SRCF+= gcc_personality_v0 # not in upstream
109 SRCF+= trampoline_setup
124 # Avoid using SSE2 instructions on i386, if unsupported.
125 .if ${MACHINE_CPUARCH} == "i386" && empty(MACHINE_CPU:Msse2)
141 # __cpu_model support, only used on x86
142 .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
146 # The fp_mode implementation for amd64 and i386 is shared, while other
147 # architectures use the regular approach.
148 .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
149 SRCS+= i386/fp_mode.c
155 # 128-bit quad precision long double support,
156 # only used on some architectures.
158 .if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "riscv"
180 # These are already shipped by libc.a on some architectures.
181 .if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips" && \
182 ${MACHINE_CPUARCH} != "riscv"
199 .if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips"
204 # FreeBSD-specific atomic intrinsics.
205 .if ${MACHINE_CPUARCH} == "arm"
206 .PATH: ${SRCTOP}/sys/arm/arm
209 CFLAGS+= -DEMIT_SYNC_ATOMICS
210 .elif ${MACHINE_CPUARCH} == "mips"
211 .PATH: ${SRCTOP}/sys/mips/mips
216 .if "${COMPILER_TYPE}" == "clang" && \
217 (${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "powerpcspe")
219 CFLAGS.atomic.c+= -Wno-atomic-alignment
223 .if ${MACHINE_ARCH:Marmv[67]*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") \
224 && exists(${CRTSRC}/${CRTARCH}/${file}vfp.S)
226 . elif exists(${CRTSRC}/${CRTARCH}/${file}.S)
233 .if ${MACHINE_CPUARCH} == "arm"
235 SRCS+= aeabi_idivmod.S
236 SRCS+= aeabi_ldivmod.S
237 SRCS+= aeabi_memcmp.S
238 SRCS+= aeabi_memcpy.S
239 SRCS+= aeabi_memmove.S
240 SRCS+= aeabi_memset.S
241 SRCS+= aeabi_uidivmod.S
242 SRCS+= aeabi_uldivmod.S
249 SRCS+= sync_synchronize.S
252 # On some archs GCC-6.3 requires bswap32 built-in.
253 .if ${MACHINE_CPUARCH} == "mips" || ${MACHINE_CPUARCH} == "riscv" || \
254 ${MACHINE_CPUARCH} == "sparc64"