aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/Kconfig
diff options
context:
space:
mode:
authorMichael Neuling <mikey@neuling.org>2009-04-01 18:02:42 +0000
committerPaul Mackerras <paulus@samba.org>2009-04-07 15:18:59 +1000
commit7e875e9dc8af70d126fa632446e967327ac3fdda (patch)
tree22757e6faff097d01931194c4af051017cb1c359 /arch/powerpc/Kconfig
parentpowerpc/pseries: Enable relay in pseries_defconfig (diff)
downloadlinux-dev-7e875e9dc8af70d126fa632446e967327ac3fdda.tar.xz
linux-dev-7e875e9dc8af70d126fa632446e967327ac3fdda.zip
powerpc: Disable VSX or current process in giveup_fpu/altivec
When we call giveup_fpu, we need to need to turn off VSX for the current process. If we don't, on return to userspace it may execute a VSX instruction before the next FP instruction, and not have its register state refreshed correctly from the thread_struct. Ditto for altivec. This caused a bug where an unaligned lfs or stfs results in fix_alignment calling giveup_fpu so it can use the FPRs (in order to do a single <-> double conversion), and then returning to userspace with FP off but VSX on. Then if a VSX instruction is executed, before another FP instruction, it will proceed without another exception and hence have the incorrect register state for VSX registers 0-31. lfs unaligned <- alignment exception turns FP off but leaves VSX on VSX instruction <- no exception since VSX on, hence we get the wrong VSX register values for VSX registers 0-31, which overlap the FPRs. Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions