Loading arch/alpha/include/asm/unistd.h +3 −0 Original line number Diff line number Diff line Loading @@ -482,6 +482,9 @@ #define __ARCH_WANT_SYS_SIGPENDING #define __ARCH_WANT_SYS_RT_SIGSUSPEND #define __ARCH_WANT_SYS_EXECVE #define __ARCH_WANT_SYS_FORK #define __ARCH_WANT_SYS_VFORK #define __ARCH_WANT_SYS_CLONE /* "Conditional" syscalls. What we want is Loading arch/alpha/kernel/entry.S +11 −31 Original line number Diff line number Diff line Loading @@ -612,44 +612,24 @@ ret_from_kernel_thread: * Special system calls. Most of these are special in that they either * have to play switch_stack games or in some way use the pt_regs struct. */ .macro fork_like name .align 4 .globl sys_fork .ent sys_fork sys_fork: .globl alpha_\name .ent alpha_\name alpha_\name: .prologue 0 bsr $1, do_switch_stack bis $31, SIGCHLD, $16 mov $31, $17 mov $31, $18 mov $31, $19 mov $31, $20 jsr $26, alpha_clone fork_out: jsr $26, sys_\name ldq $26, 56($sp) lda $sp, SWITCH_STACK_SIZE($sp) ret .end sys_fork .align 4 .globl sys_clone .ent sys_clone sys_clone: .prologue 0 bsr $1, do_switch_stack /* $16, $17, $18, $19, $20 come from the user. */ lda $26, fork_out jsr $31, alpha_clone .end sys_clone .end alpha_\name .endm .align 4 .globl sys_vfork .ent sys_vfork sys_vfork: .prologue 0 bsr $1, do_switch_stack lda $26, fork_out jsr $31, alpha_vfork .end sys_vfork fork_like fork fork_like vfork fork_like clone .align 4 .globl sys_sigreturn Loading arch/alpha/kernel/process.c +0 −25 Original line number Diff line number Diff line Loading @@ -234,31 +234,6 @@ release_thread(struct task_struct *dead_task) { } /* * "alpha_clone()".. By the time we get here, the * non-volatile registers have also been saved on the * stack. We do some ugly pointer stuff here.. (see * also copy_thread) * * Notice that "fork()" is implemented in terms of clone, * with parameters (SIGCHLD, 0). */ int alpha_clone(unsigned long clone_flags, unsigned long usp, int __user *parent_tid, int __user *child_tid, unsigned long tls_value) { return do_fork(clone_flags, usp, current_pt_regs(), 0, parent_tid, child_tid); } int alpha_vfork(void) { return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, 0, current_pt_regs(), 0, NULL, NULL); } /* * Copy an alpha thread.. */ Loading arch/alpha/kernel/systbls.S +3 −3 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ sys_call_table: .quad alpha_ni_syscall /* 0 */ .quad sys_exit .quad sys_fork .quad alpha_fork .quad sys_read .quad sys_write .quad alpha_ni_syscall /* 5 */ Loading Loading @@ -76,7 +76,7 @@ sys_call_table: .quad sys_getpgrp .quad sys_getpagesize .quad alpha_ni_syscall /* 65 */ .quad sys_vfork .quad alpha_vfork .quad sys_newstat .quad sys_newlstat .quad alpha_ni_syscall Loading Loading @@ -330,7 +330,7 @@ sys_call_table: .quad sys_ni_syscall /* 309: old get_kernel_syms */ .quad sys_syslog /* 310 */ .quad sys_reboot .quad sys_clone .quad alpha_clone .quad sys_uselib .quad sys_mlock .quad sys_munlock /* 315 */ Loading Loading
arch/alpha/include/asm/unistd.h +3 −0 Original line number Diff line number Diff line Loading @@ -482,6 +482,9 @@ #define __ARCH_WANT_SYS_SIGPENDING #define __ARCH_WANT_SYS_RT_SIGSUSPEND #define __ARCH_WANT_SYS_EXECVE #define __ARCH_WANT_SYS_FORK #define __ARCH_WANT_SYS_VFORK #define __ARCH_WANT_SYS_CLONE /* "Conditional" syscalls. What we want is Loading
arch/alpha/kernel/entry.S +11 −31 Original line number Diff line number Diff line Loading @@ -612,44 +612,24 @@ ret_from_kernel_thread: * Special system calls. Most of these are special in that they either * have to play switch_stack games or in some way use the pt_regs struct. */ .macro fork_like name .align 4 .globl sys_fork .ent sys_fork sys_fork: .globl alpha_\name .ent alpha_\name alpha_\name: .prologue 0 bsr $1, do_switch_stack bis $31, SIGCHLD, $16 mov $31, $17 mov $31, $18 mov $31, $19 mov $31, $20 jsr $26, alpha_clone fork_out: jsr $26, sys_\name ldq $26, 56($sp) lda $sp, SWITCH_STACK_SIZE($sp) ret .end sys_fork .align 4 .globl sys_clone .ent sys_clone sys_clone: .prologue 0 bsr $1, do_switch_stack /* $16, $17, $18, $19, $20 come from the user. */ lda $26, fork_out jsr $31, alpha_clone .end sys_clone .end alpha_\name .endm .align 4 .globl sys_vfork .ent sys_vfork sys_vfork: .prologue 0 bsr $1, do_switch_stack lda $26, fork_out jsr $31, alpha_vfork .end sys_vfork fork_like fork fork_like vfork fork_like clone .align 4 .globl sys_sigreturn Loading
arch/alpha/kernel/process.c +0 −25 Original line number Diff line number Diff line Loading @@ -234,31 +234,6 @@ release_thread(struct task_struct *dead_task) { } /* * "alpha_clone()".. By the time we get here, the * non-volatile registers have also been saved on the * stack. We do some ugly pointer stuff here.. (see * also copy_thread) * * Notice that "fork()" is implemented in terms of clone, * with parameters (SIGCHLD, 0). */ int alpha_clone(unsigned long clone_flags, unsigned long usp, int __user *parent_tid, int __user *child_tid, unsigned long tls_value) { return do_fork(clone_flags, usp, current_pt_regs(), 0, parent_tid, child_tid); } int alpha_vfork(void) { return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, 0, current_pt_regs(), 0, NULL, NULL); } /* * Copy an alpha thread.. */ Loading
arch/alpha/kernel/systbls.S +3 −3 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ sys_call_table: .quad alpha_ni_syscall /* 0 */ .quad sys_exit .quad sys_fork .quad alpha_fork .quad sys_read .quad sys_write .quad alpha_ni_syscall /* 5 */ Loading Loading @@ -76,7 +76,7 @@ sys_call_table: .quad sys_getpgrp .quad sys_getpagesize .quad alpha_ni_syscall /* 65 */ .quad sys_vfork .quad alpha_vfork .quad sys_newstat .quad sys_newlstat .quad alpha_ni_syscall Loading Loading @@ -330,7 +330,7 @@ sys_call_table: .quad sys_ni_syscall /* 309: old get_kernel_syms */ .quad sys_syslog /* 310 */ .quad sys_reboot .quad sys_clone .quad alpha_clone .quad sys_uselib .quad sys_mlock .quad sys_munlock /* 315 */ Loading