linux-riscv.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] tools/nolibc: riscv: Fix up compile error for rv32
@ 2023-05-18 17:00 Zhangjin Wu
  2023-05-18 17:02 ` [PATCH 1/2] tools/nolibc: riscv: Fix up load/store instructions " Zhangjin Wu
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Zhangjin Wu @ 2023-05-18 17:00 UTC (permalink / raw)
  To: Willy Tarreau, Palmer Dabbelt, Paul Walmsley, Albert Ou
  Cc: Paul E . McKenney, linux-riscv, linux-kernel, Zhangjin Wu

Hi, Willy

nolibc for riscv is only tested for rv64 currently (see
tools/testing/selftests/nolibc/Makefile), this patchset tries to let it
compile for rv32, but still not pass the nolibc selftest:

* The first patch uses lw/sw instead of ld/sd for rv32 and verse-vice for rv64
    * This patch may conflict with the stackprotector patch [1], because
      both of them changed the _start assembly in arch-riscv.h

* The second patch adds __NR_llseek based sys_lseek implementation for rv32
    * There is no __NR_lseek for rv32, see include/uapi/asm-generic/unistd.h
    * This code is based on the version from glibc, sysdeps/unix/sysv/linux/lseek.c
    * It passed the two lseek tests in nolibc selftest (write a test case manually)

* To let it compile for rv32, we still need to apply one of such actions:
    * Revert the kernel commit d4c08b9776b3 ("riscv: Use latest system call ABI"),
      but it is not the right direction, that commit has removed all of the time32 syscalls,
      and let C lib (e.g. glibc) provide the same C APIs based on the other time64 syscalls

    * If not really use any of the time32 syscalls, defining __ARCH_WANT_TIME32_SYSCALLS
      macro will let it compile, but this is buggy for the current implmentations are based
      on time32 syscalls!

    * Really implement the C APIs for rv32, based on the time64 syscalls, just like glibc.
      This commit c8ce48f06503 ("asm-generic: Make time32 syscall numbers optional") shows
      us which functions should be re-implemented.

So, the work todo for rv32 is:

* Rebasing all of the old time32 syscalls based C APIs on the new time64 syscalls,
  but they are not simply mapped one by one, glibc is a good reference.

* Add standalone rv32 test support in tools/testing/selftests/nolibc/

Best Regards,
Zhangjin Wu

[1]: https://lore.kernel.org/linux-riscv/mhng-1ec176a9-ec5d-470b-a278-a4e9cec728a8@palmer-ri-x1c9a/

Zhangjin Wu (2):
  tools/nolibc: riscv: Fix up load/store instructions for rv32
  tools/nolibc: riscv: Support __NR_llseek for rv32

 tools/include/nolibc/arch-riscv.h | 14 +++++++++-----
 tools/include/nolibc/std.h        |  1 +
 tools/include/nolibc/sys.h        | 19 +++++++++++++++++++
 3 files changed, 29 insertions(+), 5 deletions(-)

-- 
2.25.1



_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2023-05-20 14:32 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-18 17:00 [PATCH 0/2] tools/nolibc: riscv: Fix up compile error for rv32 Zhangjin Wu
2023-05-18 17:02 ` [PATCH 1/2] tools/nolibc: riscv: Fix up load/store instructions " Zhangjin Wu
2023-05-20  8:50   ` Willy Tarreau
2023-05-20  9:11     ` Zhangjin Wu
2023-05-20  9:33       ` Willy Tarreau
2023-05-20 10:05         ` Zhangjin Wu
2023-05-20 10:20           ` Willy Tarreau
2023-05-18 17:03 ` [PATCH 2/2] tools/nolibc: riscv: Support __NR_llseek " Zhangjin Wu
2023-05-19  9:40 ` [PATCH 0/2] tools/nolibc: riscv: Fix up compile error " Willy Tarreau
2023-05-19 10:11   ` Thomas Weißschuh
2023-05-19 10:19     ` Willy Tarreau
2023-05-20  7:18       ` Thomas Weißschuh
2023-05-20  8:46         ` Willy Tarreau
2023-05-20 14:31   ` Zhangjin Wu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).