mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-11-18 23:54:26 +08:00
bfin: switch to generic vfork, get rid of pointless wrappers
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
3e41f9ba61
commit
135c37b83c
@ -447,6 +447,7 @@
|
|||||||
#define __ARCH_WANT_SYS_RT_SIGACTION
|
#define __ARCH_WANT_SYS_RT_SIGACTION
|
||||||
#define __ARCH_WANT_SYS_RT_SIGSUSPEND
|
#define __ARCH_WANT_SYS_RT_SIGSUSPEND
|
||||||
#define __ARCH_WANT_SYS_EXECVE
|
#define __ARCH_WANT_SYS_EXECVE
|
||||||
|
#define __ARCH_WANT_SYS_VFORK
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "Conditional" syscalls
|
* "Conditional" syscalls
|
||||||
|
@ -57,36 +57,3 @@ ENTRY(_ret_from_fork)
|
|||||||
RESTORE_CONTEXT
|
RESTORE_CONTEXT
|
||||||
rti;
|
rti;
|
||||||
ENDPROC(_ret_from_fork)
|
ENDPROC(_ret_from_fork)
|
||||||
|
|
||||||
ENTRY(_sys_vfork)
|
|
||||||
r0 = sp;
|
|
||||||
r0 += 24;
|
|
||||||
[--sp] = rets;
|
|
||||||
SP += -12;
|
|
||||||
pseudo_long_call _bfin_vfork, p2;
|
|
||||||
SP += 12;
|
|
||||||
rets = [sp++];
|
|
||||||
rts;
|
|
||||||
ENDPROC(_sys_vfork)
|
|
||||||
|
|
||||||
ENTRY(_sys_clone)
|
|
||||||
r0 = sp;
|
|
||||||
r0 += 24;
|
|
||||||
[--sp] = rets;
|
|
||||||
SP += -12;
|
|
||||||
pseudo_long_call _bfin_clone, p2;
|
|
||||||
SP += 12;
|
|
||||||
rets = [sp++];
|
|
||||||
rts;
|
|
||||||
ENDPROC(_sys_clone)
|
|
||||||
|
|
||||||
ENTRY(_sys_rt_sigreturn)
|
|
||||||
r0 = sp;
|
|
||||||
r0 += 24;
|
|
||||||
[--sp] = rets;
|
|
||||||
SP += -12;
|
|
||||||
pseudo_long_call _do_rt_sigreturn, p2;
|
|
||||||
SP += 12;
|
|
||||||
rets = [sp++];
|
|
||||||
rts;
|
|
||||||
ENDPROC(_sys_rt_sigreturn)
|
|
||||||
|
@ -127,28 +127,13 @@ void flush_thread(void)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
asmlinkage int bfin_vfork(struct pt_regs *regs)
|
asmlinkage int bfin_clone(unsigned long clone_flags, unsigned long newsp)
|
||||||
{
|
{
|
||||||
return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, rdusp(), regs, 0, NULL,
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
asmlinkage int bfin_clone(struct pt_regs *regs)
|
|
||||||
{
|
|
||||||
unsigned long clone_flags;
|
|
||||||
unsigned long newsp;
|
|
||||||
|
|
||||||
#ifdef __ARCH_SYNC_CORE_DCACHE
|
#ifdef __ARCH_SYNC_CORE_DCACHE
|
||||||
if (current->nr_cpus_allowed == num_possible_cpus())
|
if (current->nr_cpus_allowed == num_possible_cpus())
|
||||||
set_cpus_allowed_ptr(current, cpumask_of(smp_processor_id()));
|
set_cpus_allowed_ptr(current, cpumask_of(smp_processor_id()));
|
||||||
#endif
|
#endif
|
||||||
|
if (newsp)
|
||||||
/* syscall2 puts clone_flags in r0 and usp in r1 */
|
|
||||||
clone_flags = regs->r0;
|
|
||||||
newsp = regs->r1;
|
|
||||||
if (!newsp)
|
|
||||||
newsp = rdusp();
|
|
||||||
else
|
|
||||||
newsp -= 12;
|
newsp -= 12;
|
||||||
return do_fork(clone_flags, newsp, regs, 0, NULL, NULL);
|
return do_fork(clone_flags, newsp, regs, 0, NULL, NULL);
|
||||||
}
|
}
|
||||||
@ -174,7 +159,7 @@ copy_thread(unsigned long clone_flags,
|
|||||||
} else {
|
} else {
|
||||||
*childregs = *regs;
|
*childregs = *regs;
|
||||||
childregs->r0 = 0;
|
childregs->r0 = 0;
|
||||||
p->thread.usp = usp;
|
p->thread.usp = usp ? : rdusp();
|
||||||
v[0] = v[1] = 0;
|
v[0] = v[1] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,9 +82,9 @@ rt_restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *p
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
asmlinkage int do_rt_sigreturn(unsigned long __unused)
|
asmlinkage int sys_rt_sigreturn(void)
|
||||||
{
|
{
|
||||||
struct pt_regs *regs = (struct pt_regs *)__unused;
|
struct pt_regs *regs = current_pt_regs();
|
||||||
unsigned long usp = rdusp();
|
unsigned long usp = rdusp();
|
||||||
struct rt_sigframe *frame = (struct rt_sigframe *)(usp);
|
struct rt_sigframe *frame = (struct rt_sigframe *)(usp);
|
||||||
sigset_t set;
|
sigset_t set;
|
||||||
|
@ -1431,7 +1431,7 @@ ENTRY(_sys_call_table)
|
|||||||
.long _sys_ni_syscall /* old sys_ipc */
|
.long _sys_ni_syscall /* old sys_ipc */
|
||||||
.long _sys_fsync
|
.long _sys_fsync
|
||||||
.long _sys_ni_syscall /* old sys_sigreturn */
|
.long _sys_ni_syscall /* old sys_sigreturn */
|
||||||
.long _sys_clone /* 120 */
|
.long _bfin_clone /* 120 */
|
||||||
.long _sys_setdomainname
|
.long _sys_setdomainname
|
||||||
.long _sys_newuname
|
.long _sys_newuname
|
||||||
.long _sys_ni_syscall /* old sys_modify_ldt */
|
.long _sys_ni_syscall /* old sys_modify_ldt */
|
||||||
|
Loading…
Reference in New Issue
Block a user