Loading arch/blackfin/include/asm/unistd.h +1 −0 Original line number Diff line number Diff line Loading @@ -447,6 +447,7 @@ #define __ARCH_WANT_SYS_RT_SIGACTION #define __ARCH_WANT_SYS_RT_SIGSUSPEND #define __ARCH_WANT_SYS_EXECVE #define __ARCH_WANT_SYS_VFORK /* * "Conditional" syscalls Loading arch/blackfin/kernel/entry.S +0 −33 Original line number Diff line number Diff line Loading @@ -57,36 +57,3 @@ ENTRY(_ret_from_fork) RESTORE_CONTEXT rti; 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) arch/blackfin/kernel/process.c +3 −18 Original line number Diff line number Diff line Loading @@ -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 if (current->nr_cpus_allowed == num_possible_cpus()) set_cpus_allowed_ptr(current, cpumask_of(smp_processor_id())); #endif /* syscall2 puts clone_flags in r0 and usp in r1 */ clone_flags = regs->r0; newsp = regs->r1; if (!newsp) newsp = rdusp(); else if (newsp) newsp -= 12; return do_fork(clone_flags, newsp, regs, 0, NULL, NULL); } Loading @@ -174,7 +159,7 @@ copy_thread(unsigned long clone_flags, } else { *childregs = *regs; childregs->r0 = 0; p->thread.usp = usp; p->thread.usp = usp ? : rdusp(); v[0] = v[1] = 0; } Loading arch/blackfin/kernel/signal.c +2 −2 Original line number Diff line number Diff line Loading @@ -82,9 +82,9 @@ rt_restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *p 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(); struct rt_sigframe *frame = (struct rt_sigframe *)(usp); sigset_t set; Loading arch/blackfin/mach-common/entry.S +1 −1 Original line number Diff line number Diff line Loading @@ -1431,7 +1431,7 @@ ENTRY(_sys_call_table) .long _sys_ni_syscall /* old sys_ipc */ .long _sys_fsync .long _sys_ni_syscall /* old sys_sigreturn */ .long _sys_clone /* 120 */ .long _bfin_clone /* 120 */ .long _sys_setdomainname .long _sys_newuname .long _sys_ni_syscall /* old sys_modify_ldt */ Loading Loading
arch/blackfin/include/asm/unistd.h +1 −0 Original line number Diff line number Diff line Loading @@ -447,6 +447,7 @@ #define __ARCH_WANT_SYS_RT_SIGACTION #define __ARCH_WANT_SYS_RT_SIGSUSPEND #define __ARCH_WANT_SYS_EXECVE #define __ARCH_WANT_SYS_VFORK /* * "Conditional" syscalls Loading
arch/blackfin/kernel/entry.S +0 −33 Original line number Diff line number Diff line Loading @@ -57,36 +57,3 @@ ENTRY(_ret_from_fork) RESTORE_CONTEXT rti; 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)
arch/blackfin/kernel/process.c +3 −18 Original line number Diff line number Diff line Loading @@ -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 if (current->nr_cpus_allowed == num_possible_cpus()) set_cpus_allowed_ptr(current, cpumask_of(smp_processor_id())); #endif /* syscall2 puts clone_flags in r0 and usp in r1 */ clone_flags = regs->r0; newsp = regs->r1; if (!newsp) newsp = rdusp(); else if (newsp) newsp -= 12; return do_fork(clone_flags, newsp, regs, 0, NULL, NULL); } Loading @@ -174,7 +159,7 @@ copy_thread(unsigned long clone_flags, } else { *childregs = *regs; childregs->r0 = 0; p->thread.usp = usp; p->thread.usp = usp ? : rdusp(); v[0] = v[1] = 0; } Loading
arch/blackfin/kernel/signal.c +2 −2 Original line number Diff line number Diff line Loading @@ -82,9 +82,9 @@ rt_restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *p 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(); struct rt_sigframe *frame = (struct rt_sigframe *)(usp); sigset_t set; Loading
arch/blackfin/mach-common/entry.S +1 −1 Original line number Diff line number Diff line Loading @@ -1431,7 +1431,7 @@ ENTRY(_sys_call_table) .long _sys_ni_syscall /* old sys_ipc */ .long _sys_fsync .long _sys_ni_syscall /* old sys_sigreturn */ .long _sys_clone /* 120 */ .long _bfin_clone /* 120 */ .long _sys_setdomainname .long _sys_newuname .long _sys_ni_syscall /* old sys_modify_ldt */ Loading