[RFC] Attempt to clean up sigsuspend et al

David Woodhouse dwmw2 at infradead.org
Sun Nov 13 20:41:26 EST 2005

On Sun, 2005-11-13 at 17:58 +1100, Paul Mackerras wrote:
> Or have a mark in the syscall table (e.g. set the bottom bit of the
> address) for the syscalls that need the full register set.  That does
> mean an extra conditional branch in the syscall entry path for all
> syscalls, though.

We don't need to do it on entry; we can do it on exit. If do_signal()
sees that the nvgprs weren't saved in the pt_regs it's playing with,
then it can set a new TIF_SAVENVPGRS_TO_SIG_FRAME bit. I don't think we
even need to store a pointer saying where to put them -- the signal
frame will always be at the top of the userspace stack.

As long as we handle the new bit before TIF_SIGPENDING and before
another call to do_signal(), we don't need to worry about recursive
signals and having to fill in more than one signal frame.


More information about the Linuxppc-dev mailing list