Willy, Thomas This is the revision of the v1 syscall helpers [1], just rebased it on 20230606-nolibc-rv32+stkp7a of [2]. It doesn't conflict with the -ENOSYS patchset [3], so, it is ok to simply merge both of them. This revision mainly applied your suggestions of v1, both of the syscall return and call helpers are simplified or cleaned up. Changes from v1 -> v2: * tools/nolibc: sys.h: add __syscall() and __sysret() helpers * Use inline function instead of macro for the syscall return helper (Suggestion from Thomas) * Rename syscall return helper from __syscall_ret to __sysret (align with __syscall and it is not that long now) * Make __sysret() be always inline (Suggestion from Willy) * Simplify the whole __syscall() macro to oneline code (Benefit from the fixed 'long' return type of syscalls) * tools/nolibc: unistd.h: apply __sysret() helper * Convert the whole _syscall() macro to oneline code * tools/nolibc: sys.h: apply __sysret() helper * Futher convert both brk() and getpagesize() to oneline code * tools/nolibc: sys.h: apply __syscall() helper * Keep the same as v1, because the __syscall() usage not changed Best regards, Zhangjin --- [1]: https://lore.kernel.org/linux-riscv/cover.1685856497.git.falcon@xxxxxxxxxxx/ [2]: https://git.kernel.org/pub/scm/linux/kernel/git/wtarreau/nolibc.git [3]: https://lore.kernel.org/linux-riscv/cover.1685780412.git.falcon@xxxxxxxxxxx/ Zhangjin Wu (4): tools/nolibc: sys.h: add __syscall() and __sysret() helpers tools/nolibc: unistd.h: apply __sysret() helper tools/nolibc: sys.h: apply __sysret() helper tools/nolibc: sys.h: apply __syscall() helper tools/include/nolibc/sys.h | 366 ++++++---------------------------- tools/include/nolibc/unistd.h | 11 +- 2 files changed, 57 insertions(+), 320 deletions(-) -- 2.25.1