summaryrefslogtreecommitdiff
path: root/arch/alpha/kernel/entry.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/alpha/kernel/entry.S')
-rw-r--r--arch/alpha/kernel/entry.S21
1 files changed, 7 insertions, 14 deletions
diff --git a/arch/alpha/kernel/entry.S b/arch/alpha/kernel/entry.S
index a7607832dd4f..c245de65c61b 100644
--- a/arch/alpha/kernel/entry.S
+++ b/arch/alpha/kernel/entry.S
@@ -617,7 +617,6 @@ ret_from_kernel_thread:
.ent sys_fork
sys_fork:
.prologue 0
- mov $sp, $21
bsr $1, do_switch_stack
bis $31, SIGCHLD, $16
mov $31, $17
@@ -625,7 +624,9 @@ sys_fork:
mov $31, $19
mov $31, $20
jsr $26, alpha_clone
- bsr $1, undo_switch_stack
+fork_out:
+ ldq $26, 56($sp)
+ lda $sp, SWITCH_STACK_SIZE($sp)
ret
.end sys_fork
@@ -634,12 +635,10 @@ sys_fork:
.ent sys_clone
sys_clone:
.prologue 0
- mov $sp, $21
bsr $1, do_switch_stack
/* $16, $17, $18, $19, $20 come from the user. */
- jsr $26, alpha_clone
- bsr $1, undo_switch_stack
- ret
+ lda $26, fork_out
+ jsr $31, alpha_clone
.end sys_clone
.align 4
@@ -647,11 +646,9 @@ sys_clone:
.ent sys_vfork
sys_vfork:
.prologue 0
- mov $sp, $16
bsr $1, do_switch_stack
- jsr $26, alpha_vfork
- bsr $1, undo_switch_stack
- ret
+ lda $26, fork_out
+ jsr $31, alpha_vfork
.end sys_vfork
.align 4
@@ -661,8 +658,6 @@ sys_sigreturn:
.prologue 0
lda $9, ret_from_straced
cmpult $26, $9, $9
- mov $sp, $17
- lda $18, -SWITCH_STACK_SIZE($sp)
lda $sp, -SWITCH_STACK_SIZE($sp)
jsr $26, do_sigreturn
bne $9, 1f
@@ -678,8 +673,6 @@ sys_rt_sigreturn:
.prologue 0
lda $9, ret_from_straced
cmpult $26, $9, $9
- mov $sp, $17
- lda $18, -SWITCH_STACK_SIZE($sp)
lda $sp, -SWITCH_STACK_SIZE($sp)
jsr $26, do_rt_sigreturn
bne $9, 1f