On Tue, 14 Dec 2021 at 19:29, Richard Henderson <richard.hender...@linaro.org> wrote: > For loongarch64, according to glibc, > > #define __SYSCALL_CLOBBERS \ > "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8", "memory" > > which does suggest that a6 is unused, saved across the syscall, and also > call-clobbered > (so we don't have to allocate a stack frame). > > I've had a browse through the loongarch kernel code and that seems to be all > true. > (Curiously, loongarch restores more registers than it saves on the way out of > handle_syscall. There may be a subtle reason for that, or room for > improvement.)
Sadly most of the kernel architectures don't document the "which registers are clobbered" part of their ABI. It would be helpful if they did. (I did nudge a local arm kernel dev to have a look at doing that for arm...) -- PMM