summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorJohn David Anglin <dave@hiauly1.hia.nrc.ca>2010-04-11 17:12:56 +0000
committerKyle McMartin <kyle@dreadnought.i.jkkm.org>2010-05-30 05:44:36 -0400
commit8f6c0c2bf1d4cc626588ca6f8dc642df34c0d26d (patch)
treee977c2a0e241876add6828dcf4712ed63b1f2659 /arch
parent53e30d022769434327a682d65031f129cd5d9c33 (diff)
downloadlwn-8f6c0c2bf1d4cc626588ca6f8dc642df34c0d26d.tar.gz
lwn-8f6c0c2bf1d4cc626588ca6f8dc642df34c0d26d.zip
parisc: Avoid interruption in critical region in entry.S
Signed-off-by: John David Anglin <dave.anglin@nrc-cnrc.gc.ca> Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/parisc/kernel/entry.S5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S
index 3a44f7f704fa..ba86f610e76f 100644
--- a/arch/parisc/kernel/entry.S
+++ b/arch/parisc/kernel/entry.S
@@ -2076,9 +2076,10 @@ syscall_restore:
LDREG TASK_PT_GR31(%r1),%r31 /* restore syscall rp */
/* NOTE: We use rsm/ssm pair to make this operation atomic */
+ LDREG TASK_PT_GR30(%r1),%r1 /* Get user sp */
rsm PSW_SM_I, %r0
- LDREG TASK_PT_GR30(%r1),%r30 /* restore user sp */
- mfsp %sr3,%r1 /* Get users space id */
+ copy %r1,%r30 /* Restore user sp */
+ mfsp %sr3,%r1 /* Get user space id */
mtsp %r1,%sr7 /* Restore sr7 */
ssm PSW_SM_I, %r0