diff options
author | Greg Ungerer <gerg@snapgear.com> | 2007-07-25 08:07:20 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-25 14:05:01 -0400 |
commit | 7160a67305f08d52284b333f1403abbf8b0a1970 (patch) | |
tree | fdde56856b37c2f775ed757bb13ecbb9bece81ea /arch/m68knommu/platform/5307/entry.S | |
parent | 063586a6b1e877eb10621d191aeb67e361383d77 (diff) |
m68knommu: simplify ColdFire resume code
It is useless to preserve THREAD_SR in `resume'. The real user's sr
is actually in the stack. We also don't need to disable interrupts :
we'll never be in an invalid state, the sp switch is atomic.
Signed-off-by: Philippe De Muyter <phdm@macqel.be>
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/m68knommu/platform/5307/entry.S')
-rw-r--r-- | arch/m68knommu/platform/5307/entry.S | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/arch/m68knommu/platform/5307/entry.S b/arch/m68knommu/platform/5307/entry.S index c358aebe0af3..a8cd867805ca 100644 --- a/arch/m68knommu/platform/5307/entry.S +++ b/arch/m68knommu/platform/5307/entry.S | |||
@@ -213,16 +213,12 @@ ENTRY(ret_from_interrupt) | |||
213 | * Beware - when entering resume, prev (the current task) is | 213 | * Beware - when entering resume, prev (the current task) is |
214 | * in a0, next (the new task) is in a1,so don't change these | 214 | * in a0, next (the new task) is in a1,so don't change these |
215 | * registers until their contents are no longer needed. | 215 | * registers until their contents are no longer needed. |
216 | * This is always called in supervisor mode, so don't bother to save | ||
217 | * and restore sr; user's process sr is actually in the stack. | ||
216 | */ | 218 | */ |
217 | ENTRY(resume) | 219 | ENTRY(resume) |
218 | movel %a0, %d1 /* get prev thread in d1 */ | 220 | movel %a0, %d1 /* get prev thread in d1 */ |
219 | 221 | ||
220 | movew %sr,%d0 /* save thread status reg */ | ||
221 | movew %d0,%a0@(TASK_THREAD+THREAD_SR) | ||
222 | |||
223 | oril #0x700,%d0 /* disable interrupts */ | ||
224 | move %d0,%sr | ||
225 | |||
226 | movel sw_usp,%d0 /* save usp */ | 222 | movel sw_usp,%d0 /* save usp */ |
227 | movel %d0,%a0@(TASK_THREAD+THREAD_USP) | 223 | movel %d0,%a0@(TASK_THREAD+THREAD_USP) |
228 | 224 | ||
@@ -233,7 +229,4 @@ ENTRY(resume) | |||
233 | 229 | ||
234 | movel %a1@(TASK_THREAD+THREAD_USP),%a0 /* restore thread user stack */ | 230 | movel %a1@(TASK_THREAD+THREAD_USP),%a0 /* restore thread user stack */ |
235 | movel %a0, sw_usp | 231 | movel %a0, sw_usp |
236 | |||
237 | movew %a1@(TASK_THREAD+THREAD_SR),%d0 /* restore thread status reg */ | ||
238 | movew %d0, %sr | ||
239 | rts | 232 | rts |