diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-10-26 09:54:47 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-11-28 22:44:45 -0500 |
commit | dfe09ae0e5fe40679af05b1ba810d469844c97b3 (patch) | |
tree | 0131917cc3c8f7e1cb5126e43064a01d2e1cab1c /arch/alpha/kernel/entry.S | |
parent | 87f1ca8fd9f00cc024a141623d042ca4319e12c1 (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.S | 42 |
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 |
618 | sys_fork: | 620 | alpha_\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 | ||
627 | fork_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 | ||
636 | sys_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 | 630 | fork_like fork |
645 | .globl sys_vfork | 631 | fork_like vfork |
646 | .ent sys_vfork | 632 | fork_like clone |
647 | sys_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 |