[ARM] 5349/1: VFP: Add PM code to save and restore current VFP state
authorBen Dooks <ben-linux@fluff.org>
Thu, 18 Dec 2008 11:26:54 +0000 (12:26 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 18 Dec 2008 21:21:34 +0000 (21:21 +0000)
commitfc0b7a20368193e1f7cf1376624eed419b9c33e6
tree6b1364b1b4bb7cee7bec720d28bd75ba4794aff9
parentc95a44329e816d2f9da21b27e74615d5ee0d2333
[ARM] 5349/1: VFP: Add PM code to save and restore current VFP state

When CONFIG_PM is selected, the VFP code does not have any handler
installed to deal with either saving the VFP state of the current
task, nor does it do anything to try and restore the VFP after a
resume.

On resume, the VFP will have been reset and the co-processor access
control registers are in an indeterminate state (very probably the
CP10 and CP11 the VFP uses will have been disabled by the ARM core
reset). When this happens, resume will break as soon as it tries to
unfreeze the tasks and restart scheduling.

Add a sys device to allow us to hook the suspend call to save the
current thread state if the thread is using VFP and a resume hook
which restores the CP10/CP11 access and ensures the VFP is disabled
so that the lazy swapping will take place on next access.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/vfp/vfp.h
arch/arm/vfp/vfphw.S
arch/arm/vfp/vfpmodule.c