Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 340342
b: refs/heads/master
c: dfe09ae
h: refs/heads/master
v: v3
  • Loading branch information
Al Viro committed Nov 29, 2012
1 parent 06eae67 commit b1f8392
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 60 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 87f1ca8fd9f00cc024a141623d042ca4319e12c1
refs/heads/master: dfe09ae0e5fe40679af05b1ba810d469844c97b3
3 changes: 3 additions & 0 deletions trunk/arch/alpha/include/asm/unistd.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
42 changes: 11 additions & 31 deletions trunk/arch/alpha/kernel/entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
25 changes: 0 additions & 25 deletions trunk/arch/alpha/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -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..
*/
Expand Down
6 changes: 3 additions & 3 deletions trunk/arch/alpha/kernel/systbls.S
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 */
Expand Down

0 comments on commit b1f8392

Please sign in to comment.