Loading arch/openrisc/include/asm/syscalls.h +7 −0 Original line number Diff line number Diff line Loading @@ -24,4 +24,11 @@ asmlinkage long sys_or1k_atomic(unsigned long type, unsigned long *v1, #include <asm-generic/syscalls.h> asmlinkage long __sys_clone(unsigned long clone_flags, unsigned long newsp, void __user *parent_tid, void __user *child_tid, int tls); asmlinkage long __sys_fork(void); #define sys_clone __sys_clone #define sys_fork __sys_fork #endif /* __ASM_OPENRISC_SYSCALLS_H */ arch/openrisc/include/uapi/asm/unistd.h +2 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ #define sys_mmap2 sys_mmap_pgoff #define __ARCH_WANT_SYS_EXECVE #define __ARCH_WANT_SYS_FORK #define __ARCH_WANT_SYS_CLONE #include <asm-generic/unistd.h> Loading arch/openrisc/kernel/Makefile +1 −1 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ extra-y := head.o vmlinux.lds obj-y := setup.o idle.o or32_ksyms.o process.o dma.o \ traps.o time.o irq.o entry.o ptrace.o signal.o sys_or32.o \ traps.o time.o irq.o entry.o ptrace.o signal.o \ sys_call_table.o obj-$(CONFIG_MODULES) += module.o Loading arch/openrisc/kernel/entry.S +6 −6 Original line number Diff line number Diff line Loading @@ -1071,15 +1071,15 @@ _fork_save_extra_regs_and_call: l.jr r29 l.sw PT_GPR28(r1),r28 ENTRY(sys_clone) l.movhi r29,hi(_sys_clone) l.ori r29,r29,lo(_sys_clone) ENTRY(__sys_clone) l.movhi r29,hi(sys_clone) l.ori r29,r29,lo(sys_clone) l.j _fork_save_extra_regs_and_call l.addi r7,r1,0 ENTRY(sys_fork) l.movhi r29,hi(_sys_fork) l.ori r29,r29,lo(_sys_fork) ENTRY(__sys_fork) l.movhi r29,hi(sys_fork) l.ori r29,r29,lo(sys_fork) l.j _fork_save_extra_regs_and_call l.addi r3,r1,0 Loading arch/openrisc/kernel/process.c +3 −2 Original line number Diff line number Diff line Loading @@ -168,8 +168,9 @@ copy_thread(unsigned long clone_flags, unsigned long usp, kregs->gpr[20] = usp; /* fn, kernel thread */ kregs->gpr[22] = arg; } else { *userregs = *regs; *userregs = *current_pt_regs(); if (usp) userregs->sp = usp; userregs->gpr[11] = 0; /* Result from fork() */ Loading Loading
arch/openrisc/include/asm/syscalls.h +7 −0 Original line number Diff line number Diff line Loading @@ -24,4 +24,11 @@ asmlinkage long sys_or1k_atomic(unsigned long type, unsigned long *v1, #include <asm-generic/syscalls.h> asmlinkage long __sys_clone(unsigned long clone_flags, unsigned long newsp, void __user *parent_tid, void __user *child_tid, int tls); asmlinkage long __sys_fork(void); #define sys_clone __sys_clone #define sys_fork __sys_fork #endif /* __ASM_OPENRISC_SYSCALLS_H */
arch/openrisc/include/uapi/asm/unistd.h +2 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ #define sys_mmap2 sys_mmap_pgoff #define __ARCH_WANT_SYS_EXECVE #define __ARCH_WANT_SYS_FORK #define __ARCH_WANT_SYS_CLONE #include <asm-generic/unistd.h> Loading
arch/openrisc/kernel/Makefile +1 −1 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ extra-y := head.o vmlinux.lds obj-y := setup.o idle.o or32_ksyms.o process.o dma.o \ traps.o time.o irq.o entry.o ptrace.o signal.o sys_or32.o \ traps.o time.o irq.o entry.o ptrace.o signal.o \ sys_call_table.o obj-$(CONFIG_MODULES) += module.o Loading
arch/openrisc/kernel/entry.S +6 −6 Original line number Diff line number Diff line Loading @@ -1071,15 +1071,15 @@ _fork_save_extra_regs_and_call: l.jr r29 l.sw PT_GPR28(r1),r28 ENTRY(sys_clone) l.movhi r29,hi(_sys_clone) l.ori r29,r29,lo(_sys_clone) ENTRY(__sys_clone) l.movhi r29,hi(sys_clone) l.ori r29,r29,lo(sys_clone) l.j _fork_save_extra_regs_and_call l.addi r7,r1,0 ENTRY(sys_fork) l.movhi r29,hi(_sys_fork) l.ori r29,r29,lo(_sys_fork) ENTRY(__sys_fork) l.movhi r29,hi(sys_fork) l.ori r29,r29,lo(sys_fork) l.j _fork_save_extra_regs_and_call l.addi r3,r1,0 Loading
arch/openrisc/kernel/process.c +3 −2 Original line number Diff line number Diff line Loading @@ -168,8 +168,9 @@ copy_thread(unsigned long clone_flags, unsigned long usp, kregs->gpr[20] = usp; /* fn, kernel thread */ kregs->gpr[22] = arg; } else { *userregs = *regs; *userregs = *current_pt_regs(); if (usp) userregs->sp = usp; userregs->gpr[11] = 0; /* Result from fork() */ Loading