[libc-dev] Linux powerpc new system call instruction and ABI
Segher Boessenkool via libc-dev
libc-dev at lists.llvm.org
Thu Jun 11 14:02:30 PDT 2020
On Thu, Jun 11, 2020 at 06:12:01PM +1000, Nicholas Piggin wrote:
> Calling convention
> The proposal is for scv 0 to provide the standard Linux system call ABI
> with the following differences from sc convention:
> - lr is to be volatile across scv calls. This is necessary because the
> scv instruction clobbers lr. From previous discussion, this should be
> possible to deal with in GCC clobbers and CFI.
> - cr1 and cr5-cr7 are volatile. This matches the C ABI and would allow the
> kernel system call exit to avoid restoring the volatile cr registers
> (although we probably still would anyway to avoid information leaks).
> - Error handling: The consensus among kernel, glibc, and musl is to move to
> using negative return values in r3 rather than CR0[SO]=1 to indicate error,
> which matches most other architectures, and is closer to a function call.
What about cr0 then? Will it be volatile as well (exactly like for
> - r0,r4-r8 are documented as volatile in the ABI, but the kernel patch as
> submitted currently preserves them. This is to leave room for deciding
> which way to go with these.
The kernel has to set it to *something* that doesn't leak information ;-)
More information about the libc-dev