Loading arch/hexagon/include/uapi/asm/unistd.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -28,5 +28,6 @@ #define sys_mmap2 sys_mmap_pgoff #define sys_mmap2 sys_mmap_pgoff #define __ARCH_WANT_SYS_EXECVE #define __ARCH_WANT_SYS_EXECVE #define __ARCH_WANT_SYS_CLONE #include <asm-generic/unistd.h> #include <asm-generic/unistd.h> arch/hexagon/kernel/Makefile +1 −2 Original line number Original line Diff line number Diff line Loading @@ -3,8 +3,7 @@ extra-y := head.o vmlinux.lds obj-$(CONFIG_SMP) += smp.o topology.o obj-$(CONFIG_SMP) += smp.o topology.o obj-y += setup.o irq_cpu.o traps.o syscalltab.o signal.o time.o obj-y += setup.o irq_cpu.o traps.o syscalltab.o signal.o time.o obj-y += process.o syscall.o trampoline.o reset.o ptrace.o obj-y += process.o trampoline.o reset.o ptrace.o vdso.o obj-y += vdso.o obj-$(CONFIG_KGDB) += kgdb.o obj-$(CONFIG_KGDB) += kgdb.o obj-$(CONFIG_MODULES) += module.o hexagon_ksyms.o obj-$(CONFIG_MODULES) += module.o hexagon_ksyms.o Loading arch/hexagon/kernel/process.c +4 −3 Original line number Original line Diff line number Diff line Loading @@ -88,7 +88,7 @@ unsigned long thread_saved_pc(struct task_struct *tsk) */ */ int copy_thread(unsigned long clone_flags, unsigned long usp, int copy_thread(unsigned long clone_flags, unsigned long usp, unsigned long arg, struct task_struct *p, unsigned long arg, struct task_struct *p, struct pt_regs *regs) struct pt_regs *unused) { { struct thread_info *ti = task_thread_info(p); struct thread_info *ti = task_thread_info(p); struct hexagon_switch_stack *ss; struct hexagon_switch_stack *ss; Loading Loading @@ -117,9 +117,10 @@ int copy_thread(unsigned long clone_flags, unsigned long usp, pt_set_kmode(childregs); pt_set_kmode(childregs); return 0; return 0; } } memcpy(childregs, regs, sizeof(*childregs)); memcpy(childregs, current_pt_regs(), sizeof(*childregs)); ss->r2524 = 0; ss->r2524 = 0; if (usp) pt_set_rte_sp(childregs, usp); pt_set_rte_sp(childregs, usp); /* Child sees zero return value */ /* Child sees zero return value */ Loading arch/hexagon/kernel/syscall.cdeleted 100644 → 0 +0 −47 Original line number Original line Diff line number Diff line /* * Hexagon system calls * * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ #include <linux/file.h> #include <linux/fs.h> #include <linux/linkage.h> #include <linux/mm.h> #include <linux/module.h> #include <linux/sched.h> #include <linux/slab.h> #include <linux/syscalls.h> #include <linux/unistd.h> #include <asm/mman.h> #include <asm/registers.h> /* * System calls with architecture-specific wrappers. * See signal.c for signal-related system call wrappers. */ asmlinkage int sys_clone(unsigned long clone_flags, unsigned long newsp, unsigned long parent_tidp, unsigned long child_tidp) { struct pt_regs *pregs = current_pt_regs(); if (!newsp) newsp = pregs->SP; return do_fork(clone_flags, newsp, pregs, 0, (int __user *)parent_tidp, (int __user *)child_tidp); } Loading
arch/hexagon/include/uapi/asm/unistd.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -28,5 +28,6 @@ #define sys_mmap2 sys_mmap_pgoff #define sys_mmap2 sys_mmap_pgoff #define __ARCH_WANT_SYS_EXECVE #define __ARCH_WANT_SYS_EXECVE #define __ARCH_WANT_SYS_CLONE #include <asm-generic/unistd.h> #include <asm-generic/unistd.h>
arch/hexagon/kernel/Makefile +1 −2 Original line number Original line Diff line number Diff line Loading @@ -3,8 +3,7 @@ extra-y := head.o vmlinux.lds obj-$(CONFIG_SMP) += smp.o topology.o obj-$(CONFIG_SMP) += smp.o topology.o obj-y += setup.o irq_cpu.o traps.o syscalltab.o signal.o time.o obj-y += setup.o irq_cpu.o traps.o syscalltab.o signal.o time.o obj-y += process.o syscall.o trampoline.o reset.o ptrace.o obj-y += process.o trampoline.o reset.o ptrace.o vdso.o obj-y += vdso.o obj-$(CONFIG_KGDB) += kgdb.o obj-$(CONFIG_KGDB) += kgdb.o obj-$(CONFIG_MODULES) += module.o hexagon_ksyms.o obj-$(CONFIG_MODULES) += module.o hexagon_ksyms.o Loading
arch/hexagon/kernel/process.c +4 −3 Original line number Original line Diff line number Diff line Loading @@ -88,7 +88,7 @@ unsigned long thread_saved_pc(struct task_struct *tsk) */ */ int copy_thread(unsigned long clone_flags, unsigned long usp, int copy_thread(unsigned long clone_flags, unsigned long usp, unsigned long arg, struct task_struct *p, unsigned long arg, struct task_struct *p, struct pt_regs *regs) struct pt_regs *unused) { { struct thread_info *ti = task_thread_info(p); struct thread_info *ti = task_thread_info(p); struct hexagon_switch_stack *ss; struct hexagon_switch_stack *ss; Loading Loading @@ -117,9 +117,10 @@ int copy_thread(unsigned long clone_flags, unsigned long usp, pt_set_kmode(childregs); pt_set_kmode(childregs); return 0; return 0; } } memcpy(childregs, regs, sizeof(*childregs)); memcpy(childregs, current_pt_regs(), sizeof(*childregs)); ss->r2524 = 0; ss->r2524 = 0; if (usp) pt_set_rte_sp(childregs, usp); pt_set_rte_sp(childregs, usp); /* Child sees zero return value */ /* Child sees zero return value */ Loading
arch/hexagon/kernel/syscall.cdeleted 100644 → 0 +0 −47 Original line number Original line Diff line number Diff line /* * Hexagon system calls * * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ #include <linux/file.h> #include <linux/fs.h> #include <linux/linkage.h> #include <linux/mm.h> #include <linux/module.h> #include <linux/sched.h> #include <linux/slab.h> #include <linux/syscalls.h> #include <linux/unistd.h> #include <asm/mman.h> #include <asm/registers.h> /* * System calls with architecture-specific wrappers. * See signal.c for signal-related system call wrappers. */ asmlinkage int sys_clone(unsigned long clone_flags, unsigned long newsp, unsigned long parent_tidp, unsigned long child_tidp) { struct pt_regs *pregs = current_pt_regs(); if (!newsp) newsp = pregs->SP; return do_fork(clone_flags, newsp, pregs, 0, (int __user *)parent_tidp, (int __user *)child_tidp); }