Re: Linux powerpc new system call instruction and ABI
From: Segher Boessenkool <hidden>
Date: 2020-06-11 21:04:25
Also in:
linux-api
Hi! 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[1]: - 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 function calls)?
Notes ----- - 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 ;-) Segher