ARM: 7400/1: vfp: clear fpscr length and stride bits on entry to sig handler
authorWill Deacon <will.deacon@arm.com>
Mon, 23 Apr 2012 14:42:16 +0000 (15:42 +0100)
committerVarun Wadekar <vwadekar@nvidia.com>
Mon, 14 May 2012 12:38:28 +0000 (17:38 +0530)
commit65eefa1b6f1967e8e0976f444e2b05b4f684a29c
tree0a2929b363207a24de482007690f4fc26e0721ce
parenta009a2a90fe7d2cb74c44c3a02d9c6b62c30f5d0
ARM: 7400/1: vfp: clear fpscr length and stride bits on entry to sig handler

The ARM PCS mandates that the length and stride bits of the fpscr are
cleared on entry to and return from a public interface. Although signal
handlers run asynchronously with respect to the interrupted function,
the handler itself expects to run as though it has been called like a
normal function.

This patch updates the state mirroring the VFP hardware before entry to
a signal handler so that it adheres to the PCS. Furthermore, we disable
VFP to ensure that we trap on any floating point operation performed by
the signal handler and synchronise the hardware appropriately. A check
is inserted after the signal handler to avoid redundant flushing if VFP
was not used.

Reported-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/vfp/vfpmodule.c