From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from baythorne.infradead.org (baythorne.infradead.org [81.187.2.161]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTP id CAA9268713 for ; Sun, 13 Nov 2005 20:41:33 +1100 (EST) From: David Woodhouse To: Paul Mackerras In-Reply-To: <17270.58406.370195.733887@cargo.ozlabs.ibm.com> References: <1131745047.21212.194.camel@hades.cambridge.redhat.com> <17269.14127.936147.778781@cargo.ozlabs.ibm.com> <1131756526.27347.212.camel@baythorne.infradead.org> <17270.58406.370195.733887@cargo.ozlabs.ibm.com> Content-Type: text/plain Date: Sun, 13 Nov 2005 09:41:26 +0000 Message-Id: <1131874887.27347.221.camel@baythorne.infradead.org> Mime-Version: 1.0 Cc: linuxppc-dev@ozlabs.org Subject: Re: [RFC] Attempt to clean up sigsuspend et al List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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. -- dwmw2