Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 22 May 2023 16:58:47 -0700
From:      Mark Millard <marklmi@yahoo.com>
To:        John Baldwin <jhb@freebsd.org>, dev-commits-src-main@freebsd.org
Cc:        "kevans@freebsd.org" <kevans@FreeBSD.org>
Subject:   Re: git: ccb59683b983 - main - arm64: add tests for swp/swpb emulation 
Message-ID:  <894110D7-EFB1-4F76-ABD5-CD13DBAC4119@yahoo.com>
References:  <894110D7-EFB1-4F76-ABD5-CD13DBAC4119.ref@yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
John Baldwin <jhb_at_FreeBSD.org> wrote on
Date: Mon, 22 May 2023 23:18:34 UTC :

> On 5/15/23 2:59 PM, Jessica Clarke wrote:
> > On 15 May 2023, at 16:42, Kyle Evans <kevans@FreeBSD.org> wrote:
> >>
> >> The branch main has been updated by kevans:
> >>
> >> URL: =
https://cgit.FreeBSD.org/src/commit/?id=3Dccb59683b98360afaf5b5bb641a68fea=
22c68d0b
> >>
> >> commit ccb59683b98360afaf5b5bb641a68fea22c68d0b
> >> Author: Kyle Evans <kevans@FreeBSD.org>
> >> AuthorDate: 2023-05-15 15:42:16 +0000
> >> Commit: Kyle Evans <kevans@FreeBSD.org>
> >> CommitDate: 2023-05-15 15:42:16 +0000
> >>
> >> arm64: add tests for swp/swpb emulation
> >>
> >> One test is suitable to be hooked up to the build, so I've done =
this
> >> here. The other test lives in tools/regression because failure is a
> >> bit more subjective -- generally, one runs it for some unbounded =
amount
> >> of time and observe if it eventually exits because two threads =
acquired
> >> the same mutex.
> >>
> >> Reviewed by: imp, mmel
> >> Sponsored by: Stormshield
> >> Sponsored by: Klara, Inc.
> >> Differential Revision: https://reviews.freebsd.org/D39668
> >> ---
> >> etc/mtree/BSD.tests.dist | 2 +
> >> tests/sys/Makefile | 1 +
> >> tests/sys/compat32/Makefile | 6 +
> >> tests/sys/compat32/Makefile.inc | 4 +
> >> tests/sys/compat32/aarch64/Makefile | 24 ++
> >> tests/sys/compat32/aarch64/common.sh | 9 +
> >> tests/sys/compat32/aarch64/swp_cond_test.sh | 14 +
> >> tests/sys/compat32/aarch64/swp_cond_test_impl.S | 413 =
++++++++++++++++++++++
> >> tests/sys/compat32/aarch64/swp_test.sh | 14 +
> >> tests/sys/compat32/aarch64/swp_test_impl.S | 216 +++++++++++
> >> tools/regression/compat32/aarch64/Makefile | 4 +
> >> tools/regression/compat32/aarch64/swp_test_impl.S | 410 =
+++++++++++++++++++++
> >> 12 files changed, 1117 insertions(+)
> >>
> >> ...
> >> diff --git a/tests/sys/compat32/aarch64/Makefile =
b/tests/sys/compat32/aarch64/Makefile
> >> new file mode 100644
> >> index 000000000000..716182b15d9c
> >> --- /dev/null
> >> +++ b/tests/sys/compat32/aarch64/Makefile
> >> @@ -0,0 +1,24 @@
> >> +PACKAGE=3D tests
> >> +FILESGROUPS+=3D asmprogs
> >> +
> >> +ACFLAGS=3D -target armv7-unknown-freebsd${OS_REVISION} -nostdlib =
-Wl,-e -Wl,main -static
> >=20
> > This won=E2=80=99t work with GCC, nor will it work with an LLVM =
built with only
> > AArch64 enabled as a target (e.g. -DWITHOUT_LLVM_TARGET_ALL
> > -DWITHOUT_LLVM_TARGET_ARM; latter is needed since we do default to
> > enabling ARM if AArch64 is even for a cut-down toolchain so that =
-m32
> > works). This is why the freebsd32 sigcode in arm64 kernels is =
written
> > as hex (with disassembly comments) rather than assembled from proper
> > source.
>=20
> I haven't managed to get either 32-bit or 64-bit arm fully building =
with
> GCC FWIW. I think it can be fine to require that a system compiler for
> arm64 support -m32. We de-facto require such for amd64 already.

There is a possible implication for the build environment
compared to what it is now . . .

For:

     WITHOUT_LLVM_TARGET_AARCH64
             Do not build LLVM target support for AArch64.  The
             LLVM_TARGET_ALL option should be used rather than this in =
most
             cases.

and:

     WITHOUT_LLVM_TARGET_ARM
             Do not build LLVM target support for ARM.  The =
LLVM_TARGET_ALL
             option should be used rather than this in most cases.

and the ARM part of:

     WITHOUT_LLVM_TARGET_ALL
             Only build the required LLVM target support.  This option =
is
             preferred to specific target support options.  When set, =
these
             options are also in effect:

             WITHOUT_LLVM_TARGET_AARCH64 (unless =
WITH_LLVM_TARGET_AARCH64 is
             set explicitly)
             WITHOUT_LLVM_TARGET_ARM (unless WITH_LLVM_TARGET_ARM is set
             explicitly)
             WITHOUT_LLVM_TARGET_POWERPC (unless =
WITH_LLVM_TARGET_POWERPC is
             set explicitly)
             WITHOUT_LLVM_TARGET_RISCV (unless WITH_LLVM_TARGET_RISCV is =
set
             explicitly)

These might need some bundling such that AARCH64 being
enabled (no WITHOUT) ends up forcing ARM to also be
enabled (even if there is a WITHOUT). Or may be just
report an incoherent combination and stop.

=3D=3D=3D
Mark Millard
marklmi at yahoo.com




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?894110D7-EFB1-4F76-ABD5-CD13DBAC4119>