Re: git: ccb59683b983 - main - arm64: add tests for swp/swpb emulation

From: John Baldwin <jhb_at_FreeBSD.org>
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=ccb59683b98360afaf5b5bb641a68fea22c68d0b
>>
>> 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= tests
>> +FILESGROUPS+= asmprogs
>> +
>> +ACFLAGS= -target armv7-unknown-freebsd${OS_REVISION} -nostdlib -Wl,-e -Wl,main -static
> 
> This won’t 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.

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.

-- 
John Baldwin