mirror of https://gitee.com/openkylin/linux.git
[S390] Convert sys_clone to function with parameters.
Use function parameters instead of accessing the pt_regs structure to get the parameters. Also merge the 31 and 64 bit versions since they are identical. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
6541f7b68f
commit
2d70ca23f8
|
@ -801,23 +801,6 @@ asmlinkage long sys32_write(unsigned int fd, char __user * buf, size_t count)
|
|||
return sys_write(fd, buf, count);
|
||||
}
|
||||
|
||||
asmlinkage long sys32_clone(void)
|
||||
{
|
||||
struct pt_regs *regs = task_pt_regs(current);
|
||||
unsigned long clone_flags;
|
||||
unsigned long newsp;
|
||||
int __user *parent_tidptr, *child_tidptr;
|
||||
|
||||
clone_flags = regs->gprs[3] & 0xffffffffUL;
|
||||
newsp = regs->orig_gpr2 & 0x7fffffffUL;
|
||||
parent_tidptr = compat_ptr(regs->gprs[4]);
|
||||
child_tidptr = compat_ptr(regs->gprs[5]);
|
||||
if (!newsp)
|
||||
newsp = regs->gprs[15];
|
||||
return do_fork(clone_flags, newsp, regs, 0,
|
||||
parent_tidptr, child_tidptr);
|
||||
}
|
||||
|
||||
/*
|
||||
* 31 bit emulation wrapper functions for sys_fadvise64/fadvise64_64.
|
||||
* These need to rewrite the advise values for POSIX_FADV_{DONTNEED,NOREUSE}
|
||||
|
|
|
@ -222,7 +222,6 @@ unsigned long old32_mmap(struct mmap_arg_struct_emu31 __user *arg);
|
|||
long sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg);
|
||||
long sys32_read(unsigned int fd, char __user * buf, size_t count);
|
||||
long sys32_write(unsigned int fd, char __user * buf, size_t count);
|
||||
long sys32_clone(void);
|
||||
long sys32_fadvise64(int fd, loff_t offset, size_t len, int advise);
|
||||
long sys32_fadvise64_64(struct fadvise64_64_args __user *args);
|
||||
long sys32_sigaction(int sig, const struct old_sigaction32 __user *act,
|
||||
|
|
|
@ -1840,3 +1840,11 @@ sys_perf_event_open_wrapper:
|
|||
lgfr %r5,%r5 # int
|
||||
llgfr %r6,%r6 # unsigned long
|
||||
jg sys_perf_event_open # branch to system call
|
||||
|
||||
.globl sys_clone_wrapper
|
||||
sys_clone_wrapper:
|
||||
llgfr %r2,%r2 # unsigned long
|
||||
llgfr %r3,%r3 # unsigned long
|
||||
llgtr %r4,%r4 # int *
|
||||
llgtr %r5,%r5 # int *
|
||||
jg sys_clone # branch to system call
|
||||
|
|
|
@ -42,7 +42,8 @@ long sys_s390_fadvise64_64(struct fadvise64_64_args __user *args);
|
|||
long sys_s390_fallocate(int fd, int mode, loff_t offset, u32 len_high,
|
||||
u32 len_low);
|
||||
long sys_fork(void);
|
||||
long sys_clone(void);
|
||||
long sys_clone(unsigned long newsp, unsigned long clone_flags,
|
||||
int __user *parent_tidptr, int __user *child_tidptr);
|
||||
long sys_vfork(void);
|
||||
void execve_tail(void);
|
||||
long sys_execve(void);
|
||||
|
|
|
@ -230,17 +230,11 @@ SYSCALL_DEFINE0(fork)
|
|||
return do_fork(SIGCHLD, regs->gprs[15], regs, 0, NULL, NULL);
|
||||
}
|
||||
|
||||
SYSCALL_DEFINE0(clone)
|
||||
SYSCALL_DEFINE4(clone, unsigned long, newsp, unsigned long, clone_flags,
|
||||
int __user *, parent_tidptr, int __user *, child_tidptr)
|
||||
{
|
||||
struct pt_regs *regs = task_pt_regs(current);
|
||||
unsigned long clone_flags;
|
||||
unsigned long newsp;
|
||||
int __user *parent_tidptr, *child_tidptr;
|
||||
|
||||
clone_flags = regs->gprs[3];
|
||||
newsp = regs->orig_gpr2;
|
||||
parent_tidptr = (int __user *) regs->gprs[4];
|
||||
child_tidptr = (int __user *) regs->gprs[5];
|
||||
if (!newsp)
|
||||
newsp = regs->gprs[15];
|
||||
return do_fork(clone_flags, newsp, regs, 0,
|
||||
|
|
|
@ -128,7 +128,7 @@ SYSCALL(sys_sysinfo,sys_sysinfo,compat_sys_sysinfo_wrapper)
|
|||
SYSCALL(sys_ipc,sys_ipc,sys32_ipc_wrapper)
|
||||
SYSCALL(sys_fsync,sys_fsync,sys32_fsync_wrapper)
|
||||
SYSCALL(sys_sigreturn,sys_sigreturn,sys32_sigreturn)
|
||||
SYSCALL(sys_clone,sys_clone,sys32_clone) /* 120 */
|
||||
SYSCALL(sys_clone,sys_clone,sys_clone_wrapper) /* 120 */
|
||||
SYSCALL(sys_setdomainname,sys_setdomainname,sys32_setdomainname_wrapper)
|
||||
SYSCALL(sys_newuname,sys_s390_newuname,sys32_newuname_wrapper)
|
||||
NI_SYSCALL /* modify_ldt for i386 */
|
||||
|
|
Loading…
Reference in New Issue