Adding V-ext regs to signal context w/o expanding kernel struct sigcontext to avoid glibc ABI break
Richard Henderson
richard.henderson at linaro.org
Wed Dec 21 21:32:51 PST 2022
On 12/21/22 11:52, Vineet Gupta wrote:
> This is not an issue, if we don't change sigcontext (in kernel and glibc) - it is
> essentially the case of existing binaries. kernel still saves regs on user stack, in
> rt_sigframe, its just that userspace is not able to access them in SA_SIGINFO signal
> handers. aarch64 have this implemented this approach and it is likely they can't do
> that either for SVE regs.
aarch64 can certainly access the SVE regs on the signal stack. It simply requires that
you parse the chain of extensions within __reserved to find it.
It's quite well designed, really.
What you can't do is "only" declare a sigcontext_t and be able to construct a new context,
nor copy the entire context via structure assignment.
There is room within the risc-v context for a similar scheme, via
sigcontext.sc_fpregs.q.reserved[3]
E.g.
reserved[0] -> magic
reserved[1] -> displacement to "extension area"
reserved[2] -> size of "extension area"
Thus the area can be located anywhere within 4GB and expand to 4GB.
Not that I'd hope any signal frame would require 4GB. :-)
r~
More information about the linux-riscv
mailing list