From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=34681 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PLH8n-0006vz-Aj for qemu-devel@nongnu.org; Wed, 24 Nov 2010 10:20:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PLH8k-00046s-FV for qemu-devel@nongnu.org; Wed, 24 Nov 2010 10:20:13 -0500 Received: from mnementh.archaic.org.uk ([81.2.115.146]:16641) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PLH8k-00045l-90 for qemu-devel@nongnu.org; Wed, 24 Nov 2010 10:20:10 -0500 Received: from pm215 by mnementh.archaic.org.uk with local (Exim 4.69) (envelope-from ) id 1PLH8i-0004rv-CG for qemu-devel@nongnu.org; Wed, 24 Nov 2010 15:20:08 +0000 From: Peter Maydell Date: Wed, 24 Nov 2010 15:20:02 +0000 Message-Id: <1290612008-18693-1-git-send-email-peter.maydell@linaro.org> Subject: [Qemu-devel] [PATCH 0/6] ARM: linux-user: save/restore fpu regs to signal context List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This patchset fixes the ARM-specific parts of the linux-user signal handling code to save the VFP and iWMMXT registers to the signal context struct when invoking a signal handler, and restore them afterwards. (This omission was previously marked with a 'FIXME' comment, and meant that signal handlers which used floating point might have corrupted the FPU regs of the code they interrupted, and that signal handlers which tried to examine or change the FPU regs of the interrupted code would crash.) Peter Maydell (6): ARM: linux-user: Correct size of padding in target_ucontext_v2 ARM: Expose vfp_get_fpscr() and vfp_set_fpscr() to C code ARM: linux-user: Expose VFP registers to signal handlers ARM: linux-user: Restore VFP state from ucontext on sigreturn ARM: linux-user: Expose iWMMXT registers to signal handlers ARM: linux-user: Restore iWMMXT state from ucontext on sigreturn linux-user/signal.c | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++- target-arm/cpu.h | 4 + target-arm/helper.c | 10 +++ 3 files changed, 168 insertions(+), 2 deletions(-)