diff options
author | John David Anglin <dave@hiauly1.hia.nrc.ca> | 2010-04-11 17:12:56 +0000 |
---|---|---|
committer | Kyle McMartin <kyle@dreadnought.i.jkkm.org> | 2010-05-30 05:44:36 -0400 |
commit | 8f6c0c2bf1d4cc626588ca6f8dc642df34c0d26d (patch) | |
tree | e977c2a0e241876add6828dcf4712ed63b1f2659 /arch | |
parent | 53e30d022769434327a682d65031f129cd5d9c33 (diff) | |
download | lwn-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.S | 5 |
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 |