* [PATCH 0/3] tools/nolibc: add support for SuperH
@ 2025-06-09 9:28 Thomas Weißschuh
2025-06-09 9:28 ` [PATCH 1/3] selftests/nolibc: fix EXTRACONFIG variables ordering Thomas Weißschuh
` (4 more replies)
0 siblings, 5 replies; 10+ messages in thread
From: Thomas Weißschuh @ 2025-06-09 9:28 UTC (permalink / raw)
To: Yoshinori Sato, Rich Felker, John Paul Adrian Glaubitz,
Willy Tarreau, Shuah Khan
Cc: linux-sh, linux-kselftest, linux-kernel, Thomas Weißschuh
Add support for SuperH/"sh" to nolibc.
Only sh4 is tested for now.
This is only tested on QEMU so far.
Additional testing would be very welcome.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
Thomas Weißschuh (3):
selftests/nolibc: fix EXTRACONFIG variables ordering
selftests/nolibc: use file driver for QEMU serial
tools/nolibc: add support for SuperH
tools/include/nolibc/arch-sh.h | 162 ++++++++++++++++++++++++++++
tools/include/nolibc/arch.h | 2 +
tools/testing/selftests/nolibc/Makefile | 15 ++-
tools/testing/selftests/nolibc/run-tests.sh | 3 +-
4 files changed, 177 insertions(+), 5 deletions(-)
---
base-commit: 6275a61db2f0586b8a5d651dfc7b4aacf9d0b2d6
change-id: 20250528-nolibc-sh-8b4e3bb8efcb
Best regards,
--
Thomas Weißschuh <linux@weissschuh.net>
^ permalink raw reply [flat|nested] 10+ messages in thread* [PATCH 1/3] selftests/nolibc: fix EXTRACONFIG variables ordering 2025-06-09 9:28 [PATCH 0/3] tools/nolibc: add support for SuperH Thomas Weißschuh @ 2025-06-09 9:28 ` Thomas Weißschuh 2025-06-09 9:28 ` [PATCH 2/3] selftests/nolibc: use file driver for QEMU serial Thomas Weißschuh ` (3 subsequent siblings) 4 siblings, 0 replies; 10+ messages in thread From: Thomas Weißschuh @ 2025-06-09 9:28 UTC (permalink / raw) To: Yoshinori Sato, Rich Felker, John Paul Adrian Glaubitz, Willy Tarreau, Shuah Khan Cc: linux-sh, linux-kselftest, linux-kernel, Thomas Weißschuh The variable block got disordered at some point. Use the correct ordering. Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> --- tools/testing/selftests/nolibc/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index 853f3a846d4c0fb187922d3063ec3d1a9a30ae46..22da78a4bfea0274f66abec319d34b3d2a2824ac 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -107,10 +107,10 @@ DEFCONFIG_sparc64 = sparc64_defconfig DEFCONFIG_m68k = virt_defconfig DEFCONFIG = $(DEFCONFIG_$(XARCH)) -EXTRACONFIG_m68k = -e CONFIG_BLK_DEV_INITRD -EXTRACONFIG = $(EXTRACONFIG_$(XARCH)) EXTRACONFIG_arm = -e CONFIG_NAMESPACES EXTRACONFIG_armthumb = -e CONFIG_NAMESPACES +EXTRACONFIG_m68k = -e CONFIG_BLK_DEV_INITRD +EXTRACONFIG = $(EXTRACONFIG_$(XARCH)) # optional tests to run (default = all) TEST = -- 2.49.0 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2/3] selftests/nolibc: use file driver for QEMU serial 2025-06-09 9:28 [PATCH 0/3] tools/nolibc: add support for SuperH Thomas Weißschuh 2025-06-09 9:28 ` [PATCH 1/3] selftests/nolibc: fix EXTRACONFIG variables ordering Thomas Weißschuh @ 2025-06-09 9:28 ` Thomas Weißschuh 2025-06-20 7:51 ` Willy Tarreau 2025-06-09 9:28 ` [PATCH 3/3] tools/nolibc: add support for SuperH Thomas Weißschuh ` (2 subsequent siblings) 4 siblings, 1 reply; 10+ messages in thread From: Thomas Weißschuh @ 2025-06-09 9:28 UTC (permalink / raw) To: Yoshinori Sato, Rich Felker, John Paul Adrian Glaubitz, Willy Tarreau, Shuah Khan Cc: linux-sh, linux-kselftest, linux-kernel, Thomas Weißschuh For the test implementation of the SuperH architecture a second serial serial port needs to be used. Unfortunately the currently used 'stdio' driver does not support multiple serial ports at the same time. Switch to the 'file' driver which does support multiple ports and is sufficient for the nolibc-test usecase. Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> --- tools/testing/selftests/nolibc/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index 22da78a4bfea0274f66abec319d34b3d2a2824ac..238acaa7bb06dcdbcadd9d3190c2de726e1a40b1 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -315,12 +315,12 @@ kernel-standalone: initramfs | defconfig # run the tests after building the kernel run: kernel initramfs.cpio - $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(IMAGE)" -initrd initramfs.cpio -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" + $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(IMAGE)" -initrd initramfs.cpio -serial file:/dev/stdout $(QEMU_ARGS) > "$(CURDIR)/run.out" $(Q)$(REPORT) $(CURDIR)/run.out # re-run the tests from an existing kernel rerun: - $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(IMAGE)" -initrd initramfs.cpio -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" + $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(IMAGE)" -initrd initramfs.cpio -serial file:/dev/stdout $(QEMU_ARGS) > "$(CURDIR)/run.out" $(Q)$(REPORT) $(CURDIR)/run.out # report with existing test log -- 2.49.0 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/3] selftests/nolibc: use file driver for QEMU serial 2025-06-09 9:28 ` [PATCH 2/3] selftests/nolibc: use file driver for QEMU serial Thomas Weißschuh @ 2025-06-20 7:51 ` Willy Tarreau 0 siblings, 0 replies; 10+ messages in thread From: Willy Tarreau @ 2025-06-20 7:51 UTC (permalink / raw) To: Thomas Weißschuh Cc: Yoshinori Sato, Rich Felker, John Paul Adrian Glaubitz, Shuah Khan, linux-sh, linux-kselftest, linux-kernel Hi Thomas, On Mon, Jun 09, 2025 at 11:28:58AM +0200, Thomas Weißschuh wrote: > For the test implementation of the SuperH architecture a second serial > serial port needs to be used. Unfortunately the currently used 'stdio' > driver does not support multiple serial ports at the same time. > > Switch to the 'file' driver which does support multiple ports and is > sufficient for the nolibc-test usecase. > > Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> > --- > tools/testing/selftests/nolibc/Makefile | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile > index 22da78a4bfea0274f66abec319d34b3d2a2824ac..238acaa7bb06dcdbcadd9d3190c2de726e1a40b1 100644 > --- a/tools/testing/selftests/nolibc/Makefile > +++ b/tools/testing/selftests/nolibc/Makefile > @@ -315,12 +315,12 @@ kernel-standalone: initramfs | defconfig > > # run the tests after building the kernel > run: kernel initramfs.cpio > - $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(IMAGE)" -initrd initramfs.cpio -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" > + $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(IMAGE)" -initrd initramfs.cpio -serial file:/dev/stdout $(QEMU_ARGS) > "$(CURDIR)/run.out" > $(Q)$(REPORT) $(CURDIR)/run.out > > # re-run the tests from an existing kernel > rerun: > - $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(IMAGE)" -initrd initramfs.cpio -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" > + $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(IMAGE)" -initrd initramfs.cpio -serial file:/dev/stdout $(QEMU_ARGS) > "$(CURDIR)/run.out" I'm cautious every time we touch the -serial output after having faced issues earlier when trying to use pipes. Here I think it's OK, however, I'm wondering if "file:$(CURDIR)/run.out" wouldn't be clearer, and also encourage future changes to stick to a file and avoid piping the output to a filter command. No strong opinion though. In any case: Acked-by: Willy Tarreau <w@1wt.eu> Thanks, Willy ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 3/3] tools/nolibc: add support for SuperH 2025-06-09 9:28 [PATCH 0/3] tools/nolibc: add support for SuperH Thomas Weißschuh 2025-06-09 9:28 ` [PATCH 1/3] selftests/nolibc: fix EXTRACONFIG variables ordering Thomas Weißschuh 2025-06-09 9:28 ` [PATCH 2/3] selftests/nolibc: use file driver for QEMU serial Thomas Weißschuh @ 2025-06-09 9:28 ` Thomas Weißschuh 2025-06-09 9:53 ` [PATCH 0/3] " John Paul Adrian Glaubitz 2025-06-25 2:41 ` Rob Landley 4 siblings, 0 replies; 10+ messages in thread From: Thomas Weißschuh @ 2025-06-09 9:28 UTC (permalink / raw) To: Yoshinori Sato, Rich Felker, John Paul Adrian Glaubitz, Willy Tarreau, Shuah Khan Cc: linux-sh, linux-kselftest, linux-kernel, Thomas Weißschuh Add support for SuperH/"sh" to nolibc. Only sh4 is tested for now. The startup code is special: __nolibc_entrypoint_epilogue() calls __builtin_unreachable() which emits a call to abort(). To make this work a function prologue is generated to set up a GOT pointer which corrupts "sp". __builtin_unreachable() is necessary for __attribute__((noreturn)). Also depending on compiler flags (for example -fPIC) even more prologue is generated. Work around this by defining a nested function in asm. Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70216 Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> --- tools/include/nolibc/arch-sh.h | 162 ++++++++++++++++++++++++++++ tools/include/nolibc/arch.h | 2 + tools/testing/selftests/nolibc/Makefile | 7 ++ tools/testing/selftests/nolibc/run-tests.sh | 3 +- 4 files changed, 173 insertions(+), 1 deletion(-) diff --git a/tools/include/nolibc/arch-sh.h b/tools/include/nolibc/arch-sh.h new file mode 100644 index 0000000000000000000000000000000000000000..1ad006cba0f627f663eea36b41bc7399cca4addb --- /dev/null +++ b/tools/include/nolibc/arch-sh.h @@ -0,0 +1,162 @@ +/* SPDX-License-Identifier: LGPL-2.1 OR MIT */ +/* + * SuperH specific definitions for NOLIBC + * Copyright (C) 2025 Thomas Weißschuh <linux@weissschuh.net> + */ + +#ifndef _NOLIBC_ARCH_SH_H +#define _NOLIBC_ARCH_SH_H + +#include "compiler.h" +#include "crt.h" + +/* + * Syscalls for SuperH: + * - registers are 32bit wide + * - syscall number is passed in r3 + * - arguments are in r4, r5, r6, r7, r0, r1, r2 + * - the system call is performed by calling trapa #31 + * - syscall return value is in r0 + */ + +#define my_syscall0(num) \ +({ \ + register long _num __asm__ ("r3") = (num); \ + register long _ret __asm__ ("r0"); \ + \ + __asm__ volatile ( \ + "trapa #31" \ + : "+r"(_ret) \ + : "r"(_num) \ + : "memory", "cc" \ + ); \ + _ret; \ +}) + +#define my_syscall1(num, arg1) \ +({ \ + register long _num __asm__ ("r3") = (num); \ + register long _ret __asm__ ("r0"); \ + register long _arg1 __asm__ ("r4") = (long)(arg1); \ + \ + __asm__ volatile ( \ + "trapa #31" \ + : "=r"(_ret) \ + : "r"(_num), "r"(_arg1) \ + : "memory", "cc" \ + ); \ + _ret; \ +}) + +#define my_syscall2(num, arg1, arg2) \ +({ \ + register long _num __asm__ ("r3") = (num); \ + register long _ret __asm__ ("r0"); \ + register long _arg1 __asm__ ("r4") = (long)(arg1); \ + register long _arg2 __asm__ ("r5") = (long)(arg2); \ + \ + __asm__ volatile ( \ + "trapa #31" \ + : "=r"(_ret) \ + : "r"(_num), "r"(_arg1), "r"(_arg2) \ + : "memory", "cc" \ + ); \ + _ret; \ +}) + +#define my_syscall3(num, arg1, arg2, arg3) \ +({ \ + register long _num __asm__ ("r3") = (num); \ + register long _ret __asm__ ("r0"); \ + register long _arg1 __asm__ ("r4") = (long)(arg1); \ + register long _arg2 __asm__ ("r5") = (long)(arg2); \ + register long _arg3 __asm__ ("r6") = (long)(arg3); \ + \ + __asm__ volatile ( \ + "trapa #31" \ + : "=r"(_ret) \ + : "r"(_num), "r"(_arg1), "r"(_arg2), "r"(_arg3) \ + : "memory", "cc" \ + ); \ + _ret; \ +}) + +#define my_syscall4(num, arg1, arg2, arg3, arg4) \ +({ \ + register long _num __asm__ ("r3") = (num); \ + register long _ret __asm__ ("r0"); \ + register long _arg1 __asm__ ("r4") = (long)(arg1); \ + register long _arg2 __asm__ ("r5") = (long)(arg2); \ + register long _arg3 __asm__ ("r6") = (long)(arg3); \ + register long _arg4 __asm__ ("r7") = (long)(arg4); \ + \ + __asm__ volatile ( \ + "trapa #31" \ + : "=r"(_ret) \ + : "r"(_num), "r"(_arg1), "r"(_arg2), "r"(_arg3), "r"(_arg4) \ + : "memory", "cc" \ + ); \ + _ret; \ +}) + +#define my_syscall5(num, arg1, arg2, arg3, arg4, arg5) \ +({ \ + register long _num __asm__ ("r3") = (num); \ + register long _ret __asm__ ("r0"); \ + register long _arg1 __asm__ ("r4") = (long)(arg1); \ + register long _arg2 __asm__ ("r5") = (long)(arg2); \ + register long _arg3 __asm__ ("r6") = (long)(arg3); \ + register long _arg4 __asm__ ("r7") = (long)(arg4); \ + register long _arg5 __asm__ ("r0") = (long)(arg5); \ + \ + __asm__ volatile ( \ + "trapa #31" \ + : "=r"(_ret) \ + : "r"(_num), "r"(_arg1), "r"(_arg2), "r"(_arg3), "r"(_arg4), \ + "r"(_arg5) \ + : "memory", "cc" \ + ); \ + _ret; \ +}) + +#define my_syscall6(num, arg1, arg2, arg3, arg4, arg5, arg6) \ +({ \ + register long _num __asm__ ("r3") = (num); \ + register long _ret __asm__ ("r0"); \ + register long _arg1 __asm__ ("r4") = (long)(arg1); \ + register long _arg2 __asm__ ("r5") = (long)(arg2); \ + register long _arg3 __asm__ ("r6") = (long)(arg3); \ + register long _arg4 __asm__ ("r7") = (long)(arg4); \ + register long _arg5 __asm__ ("r0") = (long)(arg5); \ + register long _arg6 __asm__ ("r1") = (long)(arg6); \ + \ + __asm__ volatile ( \ + "trapa #31" \ + : "=r"(_ret) \ + : "r"(_num), "r"(_arg1), "r"(_arg2), "r"(_arg3), "r"(_arg4), \ + "r"(_arg5), "r"(_arg6) \ + : "memory", "cc" \ + ); \ + _ret; \ +}) + +/* startup code */ +void _start_wrapper(void); +void __attribute__((weak,noreturn)) __nolibc_entrypoint __no_stack_protector _start_wrapper(void) +{ + __asm__ volatile ( + ".global _start\n" /* The C function will have a prologue, */ + ".type _start, @function\n" /* corrupting "sp" */ + ".weak _start\n" + "_start:\n" + + "mov sp, r4\n" /* save argc pointer to r4, as arg1 of _start_c */ + "bsr _start_c\n" /* transfer to c runtime */ + "nop\n" /* delay slot */ + + ".size _start, .-_start\n" + ); + __nolibc_entrypoint_epilogue(); +} + +#endif /* _NOLIBC_ARCH_SH_H */ diff --git a/tools/include/nolibc/arch.h b/tools/include/nolibc/arch.h index d20b2304aac21bf817f02a085653d5a170546072..4cd10ebf2addca9a2a1f5ab5bb691ac7dfd4aa29 100644 --- a/tools/include/nolibc/arch.h +++ b/tools/include/nolibc/arch.h @@ -37,6 +37,8 @@ #include "arch-sparc.h" #elif defined(__m68k__) #include "arch-m68k.h" +#elif defined(__sh__) +#include "arch-sh.h" #else #error Unsupported Architecture #endif diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index 238acaa7bb06dcdbcadd9d3190c2de726e1a40b1..65a2442c6709241e410dd08af9ab6b0b0691e7a7 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -58,6 +58,7 @@ ARCH_riscv64 = riscv ARCH_s390x = s390 ARCH_sparc32 = sparc ARCH_sparc64 = sparc +ARCH_sh4 = sh ARCH := $(or $(ARCH_$(XARCH)),$(XARCH)) # kernel image names by architecture @@ -81,6 +82,7 @@ IMAGE_loongarch = arch/loongarch/boot/vmlinuz.efi IMAGE_sparc32 = arch/sparc/boot/image IMAGE_sparc64 = arch/sparc/boot/image IMAGE_m68k = vmlinux +IMAGE_sh4 = arch/sh/boot/zImage IMAGE = $(objtree)/$(IMAGE_$(XARCH)) IMAGE_NAME = $(notdir $(IMAGE)) @@ -105,11 +107,13 @@ DEFCONFIG_loongarch = defconfig DEFCONFIG_sparc32 = sparc32_defconfig DEFCONFIG_sparc64 = sparc64_defconfig DEFCONFIG_m68k = virt_defconfig +DEFCONFIG_sh4 = rts7751r2dplus_defconfig DEFCONFIG = $(DEFCONFIG_$(XARCH)) EXTRACONFIG_arm = -e CONFIG_NAMESPACES EXTRACONFIG_armthumb = -e CONFIG_NAMESPACES EXTRACONFIG_m68k = -e CONFIG_BLK_DEV_INITRD +EXTRACONFIG_sh4 = -e CONFIG_BLK_DEV_INITRD -e CONFIG_CMDLINE_FROM_BOOTLOADER EXTRACONFIG = $(EXTRACONFIG_$(XARCH)) # optional tests to run (default = all) @@ -136,6 +140,7 @@ QEMU_ARCH_loongarch = loongarch64 QEMU_ARCH_sparc32 = sparc QEMU_ARCH_sparc64 = sparc64 QEMU_ARCH_m68k = m68k +QEMU_ARCH_sh4 = sh4 QEMU_ARCH = $(QEMU_ARCH_$(XARCH)) QEMU_ARCH_USER_ppc64le = ppc64le @@ -169,6 +174,7 @@ QEMU_ARGS_loongarch = -M virt -append "console=ttyS0,115200 panic=-1 $(TEST:%=N QEMU_ARGS_sparc32 = -M SS-5 -m 256M -append "console=ttyS0,115200 panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_sparc64 = -M sun4u -append "console=ttyS0,115200 panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_m68k = -M virt -append "console=ttyGF0,115200 panic=-1 $(TEST:%=NOLIBC_TEST=%)" +QEMU_ARGS_sh4 = -M r2d -serial file:/dev/stdout -append "console=ttySC1,115200 panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS = -m 1G $(QEMU_ARGS_$(XARCH)) $(QEMU_ARGS_BIOS) $(QEMU_ARGS_EXTRA) # OUTPUT is only set when run from the main makefile, otherwise @@ -192,6 +198,7 @@ CFLAGS_s390 = -m31 CFLAGS_mips32le = -EL -mabi=32 -fPIC CFLAGS_mips32be = -EB -mabi=32 CFLAGS_sparc32 = $(call cc-option,-m32) +CFLAGS_sh4 = -ml -m4 ifeq ($(origin XARCH),command line) CFLAGS_XARCH = $(CFLAGS_$(XARCH)) endif diff --git a/tools/testing/selftests/nolibc/run-tests.sh b/tools/testing/selftests/nolibc/run-tests.sh index 8277599e6441a933d9c1ec5003acf49b06df226f..8f6addb01d22d9532e2ef367692168787c23dc1f 100755 --- a/tools/testing/selftests/nolibc/run-tests.sh +++ b/tools/testing/selftests/nolibc/run-tests.sh @@ -27,6 +27,7 @@ all_archs=( loongarch sparc32 sparc64 m68k + sh4 ) archs="${all_archs[@]}" @@ -187,7 +188,7 @@ test_arch() { echo "Unsupported configuration" return fi - if [ "$arch" = "m68k" ] && [ "$llvm" = "1" ]; then + if [ "$arch" = "m68k" -o "$arch" = "sh4" ] && [ "$llvm" = "1" ]; then echo "Unsupported configuration" return fi -- 2.49.0 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/3] tools/nolibc: add support for SuperH 2025-06-09 9:28 [PATCH 0/3] tools/nolibc: add support for SuperH Thomas Weißschuh ` (2 preceding siblings ...) 2025-06-09 9:28 ` [PATCH 3/3] tools/nolibc: add support for SuperH Thomas Weißschuh @ 2025-06-09 9:53 ` John Paul Adrian Glaubitz 2025-06-09 10:05 ` Thomas Weißschuh 2025-06-25 2:41 ` Rob Landley 4 siblings, 1 reply; 10+ messages in thread From: John Paul Adrian Glaubitz @ 2025-06-09 9:53 UTC (permalink / raw) To: Thomas Weißschuh, Yoshinori Sato, Rich Felker, Willy Tarreau, Shuah Khan Cc: linux-sh, linux-kselftest, linux-kernel, Geert Uytterhoeven Hi Thomas, On Mon, 2025-06-09 at 11:28 +0200, Thomas Weißschuh wrote: > Add support for SuperH/"sh" to nolibc. > Only sh4 is tested for now. > > This is only tested on QEMU so far. > Additional testing would be very welcome. > > Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> > --- > Thomas Weißschuh (3): > selftests/nolibc: fix EXTRACONFIG variables ordering > selftests/nolibc: use file driver for QEMU serial > tools/nolibc: add support for SuperH > > tools/include/nolibc/arch-sh.h | 162 ++++++++++++++++++++++++++++ > tools/include/nolibc/arch.h | 2 + > tools/testing/selftests/nolibc/Makefile | 15 ++- > tools/testing/selftests/nolibc/run-tests.sh | 3 +- > 4 files changed, 177 insertions(+), 5 deletions(-) > --- > base-commit: 6275a61db2f0586b8a5d651dfc7b4aacf9d0b2d6 > change-id: 20250528-nolibc-sh-8b4e3bb8efcb I have no experience with the selftest code but I can definitely test on real hardware if you can point me to some instructions on how to run the tests. CC Geert. Adrian -- .''`. John Paul Adrian Glaubitz : :' : Debian Developer `. `' Physicist `- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/3] tools/nolibc: add support for SuperH 2025-06-09 9:53 ` [PATCH 0/3] " John Paul Adrian Glaubitz @ 2025-06-09 10:05 ` Thomas Weißschuh 0 siblings, 0 replies; 10+ messages in thread From: Thomas Weißschuh @ 2025-06-09 10:05 UTC (permalink / raw) To: John Paul Adrian Glaubitz Cc: Yoshinori Sato, Rich Felker, Willy Tarreau, Shuah Khan, linux-sh, linux-kselftest, linux-kernel, Geert Uytterhoeven Hi Adrian, On 2025-06-09 11:53:25+0200, John Paul Adrian Glaubitz wrote: > On Mon, 2025-06-09 at 11:28 +0200, Thomas Weißschuh wrote: > > Add support for SuperH/"sh" to nolibc. > > Only sh4 is tested for now. > > > > This is only tested on QEMU so far. > > Additional testing would be very welcome. > > > > Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> > > --- > > Thomas Weißschuh (3): > > selftests/nolibc: fix EXTRACONFIG variables ordering > > selftests/nolibc: use file driver for QEMU serial > > tools/nolibc: add support for SuperH > > > > tools/include/nolibc/arch-sh.h | 162 ++++++++++++++++++++++++++++ > > tools/include/nolibc/arch.h | 2 + > > tools/testing/selftests/nolibc/Makefile | 15 ++- > > tools/testing/selftests/nolibc/run-tests.sh | 3 +- > > 4 files changed, 177 insertions(+), 5 deletions(-) > > --- > > base-commit: 6275a61db2f0586b8a5d651dfc7b4aacf9d0b2d6 > > change-id: 20250528-nolibc-sh-8b4e3bb8efcb > > I have no experience with the selftest code but I can definitely test > on real hardware if you can point me to some instructions on how to > run the tests. That would be much appreciated. You can compile the selftests like this: $ cd tools/testing/selftests/nolibc $ make [CC= CFLAGS_EXTRA=] nolibc-test $ ./nolibc-test The test executable is fully self-contained, you can also cross-compile it and copy it around. Thomas ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/3] tools/nolibc: add support for SuperH 2025-06-09 9:28 [PATCH 0/3] tools/nolibc: add support for SuperH Thomas Weißschuh ` (3 preceding siblings ...) 2025-06-09 9:53 ` [PATCH 0/3] " John Paul Adrian Glaubitz @ 2025-06-25 2:41 ` Rob Landley 2025-06-25 14:13 ` Thomas Weißschuh 4 siblings, 1 reply; 10+ messages in thread From: Rob Landley @ 2025-06-25 2:41 UTC (permalink / raw) To: Thomas Weißschuh, Yoshinori Sato, Rich Felker, John Paul Adrian Glaubitz, Willy Tarreau, Shuah Khan Cc: linux-sh, linux-kselftest, linux-kernel On 6/9/25 04:28, Thomas Weißschuh wrote: > Add support for SuperH/"sh" to nolibc. > Only sh4 is tested for now. > > This is only tested on QEMU so far. > Additional testing would be very welcome. I ran this by Jeff Dionne (the j-core architect) who said: > Looks correct to me. There are no endian assumptions that I can see. So you can put Acked-by: Rob Landley <rob@landley.net> Acked-by: D. Jeff Dionne <jeff@coresemi.io> But neither of us really have a build environment set up to do much with it. Is there a howto for this, or is just to run the kernel tests? Rob ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/3] tools/nolibc: add support for SuperH 2025-06-25 2:41 ` Rob Landley @ 2025-06-25 14:13 ` Thomas Weißschuh 2025-06-25 15:52 ` John Paul Adrian Glaubitz 0 siblings, 1 reply; 10+ messages in thread From: Thomas Weißschuh @ 2025-06-25 14:13 UTC (permalink / raw) To: Rob Landley Cc: Yoshinori Sato, Rich Felker, John Paul Adrian Glaubitz, Willy Tarreau, Shuah Khan, linux-sh, linux-kselftest, linux-kernel Hi Rob, On 2025-06-24 21:41:14-0500, Rob Landley wrote: > On 6/9/25 04:28, Thomas Weißschuh wrote: > > Add support for SuperH/"sh" to nolibc. > > Only sh4 is tested for now. > > > > This is only tested on QEMU so far. > > Additional testing would be very welcome. > > I ran this by Jeff Dionne (the j-core architect) who said: > > > Looks correct to me. There are no endian assumptions that I can see. > > So you can put > > Acked-by: Rob Landley <rob@landley.net> > Acked-by: D. Jeff Dionne <jeff@coresemi.io> Thanks! > But neither of us really have a build environment set up to do much with it. > Is there a howto for this, or is just to run the kernel tests? v2 of the series [0] has some test instructions. These should also work with v1, except that "-f Makefile.nolibc" needs to be removed. $ cd tools/testings/selftests/nolibc/ $ make -f Makefile.nolibc ARCH=sh CROSS_COMPILE=sh4-linux- nolibc-test $ file nolibc-test nolibc-test: ELF 32-bit LSB executable, Renesas SH, version 1 (SYSV), statically linked, not stripped $ ./nolibc-test Running test 'startup' 0 argc = 1 [OK] ... Total number of errors: 0 Exiting with status 0 [0] https://lore.kernel.org/lkml/20250623-nolibc-sh-v2-0-0f5b4b303025@weissschuh.net/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/3] tools/nolibc: add support for SuperH 2025-06-25 14:13 ` Thomas Weißschuh @ 2025-06-25 15:52 ` John Paul Adrian Glaubitz 0 siblings, 0 replies; 10+ messages in thread From: John Paul Adrian Glaubitz @ 2025-06-25 15:52 UTC (permalink / raw) To: Thomas Weißschuh, Rob Landley Cc: Yoshinori Sato, Rich Felker, Willy Tarreau, Shuah Khan, linux-sh, linux-kselftest, linux-kernel Hi Thomas, On Wed, 2025-06-25 at 16:13 +0200, Thomas Weißschuh wrote: > > But neither of us really have a build environment set up to do much with it. > > Is there a howto for this, or is just to run the kernel tests? > > v2 of the series [0] has some test instructions. > These should also work with v1, except that "-f Makefile.nolibc" needs > to be removed. > > $ cd tools/testings/selftests/nolibc/ There is a typo here. It should be "testing". But I guess since this text doesn't end up in the commits anyway, it's nothing to worry about. Unless it's part of the documentation. > $ make -f Makefile.nolibc ARCH=sh CROSS_COMPILE=sh4-linux- nolibc-test > $ file nolibc-test > nolibc-test: ELF 32-bit LSB executable, Renesas SH, version 1 (SYSV), statically linked, not stripped > $ ./nolibc-test > Running test 'startup' > 0 argc = 1 [OK] > ... > Total number of errors: 0 > Exiting with status 0 Adrian -- .''`. John Paul Adrian Glaubitz : :' : Debian Developer `. `' Physicist `- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913 ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-06-25 15:52 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2025-06-09 9:28 [PATCH 0/3] tools/nolibc: add support for SuperH Thomas Weißschuh 2025-06-09 9:28 ` [PATCH 1/3] selftests/nolibc: fix EXTRACONFIG variables ordering Thomas Weißschuh 2025-06-09 9:28 ` [PATCH 2/3] selftests/nolibc: use file driver for QEMU serial Thomas Weißschuh 2025-06-20 7:51 ` Willy Tarreau 2025-06-09 9:28 ` [PATCH 3/3] tools/nolibc: add support for SuperH Thomas Weißschuh 2025-06-09 9:53 ` [PATCH 0/3] " John Paul Adrian Glaubitz 2025-06-09 10:05 ` Thomas Weißschuh 2025-06-25 2:41 ` Rob Landley 2025-06-25 14:13 ` Thomas Weißschuh 2025-06-25 15:52 ` John Paul Adrian Glaubitz
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®