aboutsummaryrefslogtreecommitdiffstats
path: root/arch/alpha/kernel/entry.S
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-10-26 09:54:47 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2012-11-28 22:44:45 -0500
commitdfe09ae0e5fe40679af05b1ba810d469844c97b3 (patch)
tree0131917cc3c8f7e1cb5126e43064a01d2e1cab1c /arch/alpha/kernel/entry.S
parent87f1ca8fd9f00cc024a141623d042ca4319e12c1 (diff)
alpha: switch to generic fork/vfork/clone
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/alpha/kernel/entry.S')
-rw-r--r--arch/alpha/kernel/entry.S42
1 files changed, 11 insertions, 31 deletions
diff --git a/arch/alpha/kernel/entry.S b/arch/alpha/kernel/entry.S
index c245de65c61b..f62a994ef126 100644
--- a/arch/alpha/kernel/entry.S
+++ b/arch/alpha/kernel/entry.S
@@ -612,44 +612,24 @@ ret_from_kernel_thread:
612 * Special system calls. Most of these are special in that they either 612 * Special system calls. Most of these are special in that they either
613 * have to play switch_stack games or in some way use the pt_regs struct. 613 * have to play switch_stack games or in some way use the pt_regs struct.
614 */ 614 */
615
616.macro fork_like name
615 .align 4 617 .align 4
616 .globl sys_fork 618 .globl alpha_\name
617 .ent sys_fork 619 .ent alpha_\name
618sys_fork: 620alpha_\name:
619 .prologue 0 621 .prologue 0
620 bsr $1, do_switch_stack 622 bsr $1, do_switch_stack
621 bis $31, SIGCHLD, $16 623 jsr $26, sys_\name
622 mov $31, $17
623 mov $31, $18
624 mov $31, $19
625 mov $31, $20
626 jsr $26, alpha_clone
627fork_out:
628 ldq $26, 56($sp) 624 ldq $26, 56($sp)
629 lda $sp, SWITCH_STACK_SIZE($sp) 625 lda $sp, SWITCH_STACK_SIZE($sp)
630 ret 626 ret
631.end sys_fork 627.end alpha_\name
632 628.endm
633 .align 4
634 .globl sys_clone
635 .ent sys_clone
636sys_clone:
637 .prologue 0
638 bsr $1, do_switch_stack
639 /* $16, $17, $18, $19, $20 come from the user. */
640 lda $26, fork_out
641 jsr $31, alpha_clone
642.end sys_clone
643 629
644 .align 4 630fork_like fork
645 .globl sys_vfork 631fork_like vfork
646 .ent sys_vfork 632fork_like clone
647sys_vfork:
648 .prologue 0
649 bsr $1, do_switch_stack
650 lda $26, fork_out
651 jsr $31, alpha_vfork
652.end sys_vfork
653 633
654 .align 4 634 .align 4
655 .globl sys_sigreturn 635 .globl sys_sigreturn