summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKumar Gala <galak@somerset.sps.mot.com>2004-08-02 05:53:21 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-08-02 05:53:21 -0700
commitc9c17aa9ee82341d43fc0c26ddeea67aca2eb721 (patch)
tree05e421327036e598a62b07e9ac0fa8f2fdc450db
parenta5cd4546d40028705e16c84ce41402e16aed33a6 (diff)
[PATCH] ppc32: fix e500 SPE saving of context
Fix the fact that we were not the signal processing engine status and control register (SPEFSCR) on giveup_spe. Causes problems when the kernel tries to read or modify the SPEFSCR. Signed-off-by: Kumar Gala <kumar.gala@freescale.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--arch/ppc/kernel/head_e500.S2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/ppc/kernel/head_e500.S b/arch/ppc/kernel/head_e500.S
index 8f0c590f1453..ceb51d3436fa 100644
--- a/arch/ppc/kernel/head_e500.S
+++ b/arch/ppc/kernel/head_e500.S
@@ -1177,6 +1177,8 @@ _GLOBAL(giveup_spe)
evmwumiaa evr6, evr6, evr6 /* evr6 <- ACC = 0 * 0 + ACC */
li r4,THREAD_ACC
evstddx evr6, r4, r3 /* save off accumulator */
+ mfspr r6,SPRN_SPEFSCR
+ stw r6,THREAD_SPEFSCR(r3) /* save spefscr register value */
beq 1f
lwz r4,_MSR-STACK_FRAME_OVERHEAD(r5)
lis r3,MSR_SPE@h