From owner-dev-commits-src-main@freebsd.org Wed Jul 28 20:30:46 2021 Return-Path: Delivered-To: dev-commits-src-main@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 57B7E664D14; Wed, 28 Jul 2021 20:30:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4GZlfZ1gltz3QXW; Wed, 28 Jul 2021 20:30:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 21B3D241FD; Wed, 28 Jul 2021 20:30:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 16SKUkum097927; Wed, 28 Jul 2021 20:30:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 16SKUkKa097926; Wed, 28 Jul 2021 20:30:46 GMT (envelope-from git) Date: Wed, 28 Jul 2021 20:30:46 GMT Message-Id: <202107282030.16SKUkKa097926@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dimitry Andric Subject: git: cc55ee8009a5 - main - compilert-rt: build out-of-line LSE atomics helpers for aarch64 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: cc55ee8009a550810d38777fd6ace9abf3a2f6b4 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-main@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for the main branch of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jul 2021 20:30:46 -0000 The branch main has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=cc55ee8009a550810d38777fd6ace9abf3a2f6b4 commit cc55ee8009a550810d38777fd6ace9abf3a2f6b4 Author: Dimitry Andric AuthorDate: 2021-07-28 20:30:04 +0000 Commit: Dimitry Andric CommitDate: 2021-07-28 20:30:04 +0000 compilert-rt: build out-of-line LSE atomics helpers for aarch64 Both clang >= 12 and gcc >= 10.1 now default to -moutline-atomics for aarch64. This requires a bunch of helper functions in libcompiler_rt.a, to avoid link errors like "undefined symbol: __aarch64_ldadd8_acq_rel". (Note: of course you can use -mno-outline-atomics as a workaround too, but this would negate the potential performance benefit of the faster LSE instructions.) Bump __FreeBSD_version so ports maintainers can easily detect this. PR: 257392 MFC after: 2 weeks --- lib/libcompiler_rt/Makefile | 20 ++++++++++++++++++++ sys/sys/param.h | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/libcompiler_rt/Makefile b/lib/libcompiler_rt/Makefile index a2325221d0b1..b23522b7e410 100644 --- a/lib/libcompiler_rt/Makefile +++ b/lib/libcompiler_rt/Makefile @@ -19,6 +19,26 @@ MK_WERROR.gcc= no .include "Makefile.inc" +# Out-of-line LSE atomics helpers for aarch64 +.if ${MACHINE_CPUARCH} == "aarch64" +. for pat in cas swp ldadd ldclr ldeor ldset +. for size in 1 2 4 8 16 +. for model in 1 2 3 4 +. if ${pat} == "cas" || ${size} != "16" +# Use .for to define lse_name, to get a special loop-local variable +. for lse_name in outline_atomic_${pat}${size}_${model}.S +CLEANFILES+= ${lse_name} +STATICOBJS+= ${lse_name:R}.o +ACFLAGS.${lse_name}+= -DL_${pat} -DSIZE=${size} -DMODEL=${model} -I${CRTSRC} +${lse_name}: lse.S + ln -sf ${.ALLSRC} ${.TARGET} +. endfor # lse_name +. endif +. endfor # model +. endfor # size +. endfor # pat +.endif + .if ${MK_INSTALLLIB} != "no" SYMLINKS+= libcompiler_rt.a ${LIBDIR}/libgcc.a .endif diff --git a/sys/sys/param.h b/sys/sys/param.h index f1dc6dd2fcd6..11d89ea08bba 100644 --- a/sys/sys/param.h +++ b/sys/sys/param.h @@ -76,7 +76,7 @@ * cannot include sys/param.h and should only be updated here. */ #undef __FreeBSD_version -#define __FreeBSD_version 1400026 +#define __FreeBSD_version 1400027 /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,