diff options
author | Paul Mackerras <paulus@samba.org> | 2007-04-24 11:45:03 +1000 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-04-24 11:45:03 +1000 |
commit | 13177c8b7eaf7ab238e79533c746153ae116f5f8 (patch) | |
tree | 4a4675749672f201c23d6df82ee2b39eedff76f2 /arch/powerpc/platforms/cell/spufs/switch.c | |
parent | 445c9b5507b9d09a2e9b0b4dbb16517708aa40e6 (diff) | |
parent | ccf17e9d008dfebbf90dfa4ee1a56e81c784c73e (diff) |
Merge branch 'spufs' of master.kernel.org:/pub/scm/linux/kernel/git/arnd/cell-2.6 into for-2.6.22
Diffstat (limited to 'arch/powerpc/platforms/cell/spufs/switch.c')
-rw-r--r-- | arch/powerpc/platforms/cell/spufs/switch.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/powerpc/platforms/cell/spufs/switch.c b/arch/powerpc/platforms/cell/spufs/switch.c index fd91c73de34..8347c4a3f89 100644 --- a/arch/powerpc/platforms/cell/spufs/switch.c +++ b/arch/powerpc/platforms/cell/spufs/switch.c @@ -2084,6 +2084,10 @@ int spu_save(struct spu_state *prev, struct spu *spu) int rc; acquire_spu_lock(spu); /* Step 1. */ + prev->dar = spu->dar; + prev->dsisr = spu->dsisr; + spu->dar = 0; + spu->dsisr = 0; rc = __do_spu_save(prev, spu); /* Steps 2-53. */ release_spu_lock(spu); if (rc != 0 && rc != 2 && rc != 6) { @@ -2109,9 +2113,9 @@ int spu_restore(struct spu_state *new, struct spu *spu) acquire_spu_lock(spu); harvest(NULL, spu); - spu->dar = 0; - spu->dsisr = 0; spu->slb_replace = 0; + new->dar = 0; + new->dsisr = 0; spu->class_0_pending = 0; rc = __do_spu_restore(new, spu); release_spu_lock(spu); |