Hexagon: Add syscalls
PATCH v5 5/36 Hexagon: Add syscalls
Signed-off-by Richard Kuo <[email protected]>
Signed-off-by Linas Vepstas <[email protected]>
Acked-by Arnd Bergmann <[email protected]>
--- arch/hexagon/include/asm/syscall.h | 54 +++++++++++++++++++++ arch/hexagon/include/asm/unistd.h | 36 ++++++++++++++ arch/hexagon/kernel/syscall.c | 90 ++++++++++++++++++++++++++++++++++++ arch/hexagon/kernel/syscalltab.c | 32 +++++++++++++ 4 files changed, 212 insertions(+), 0 deletions(-) create mode 100644 arch/hexagon/include/asm/syscall.h create mode 100644 arch/hexagon/include/asm/unistd.h create mode 100644 arch/hexagon/kernel/syscall.c create mode 100644 arch/hexagon/kernel/syscalltab.c
arch/hexagon/include/asm/syscall.h new file +54 -0
@@ -0,0 +1,54 @@ +/* +* Syscall support for the Hexagon architecture +* +* Copyright (c) 2010-2011, Code Aurora Forum. 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. +*/ + +#ifndef _ASM_HEXAGON_SYSCALL_H +#define _ASM_HEXAGON_SYSCALL_H + +typedef long (*syscall_fn )(unsigned long ,unsigned long , +unsigned long ,unsigned long , +unsigned long ,unsigned long ); + +asmlinkage int sys_execve(char __user *ufilename, char __user * __user *argv, +char __user *__user *envp); +asmlinkage int sys_clone(unsigned long clone_flags, unsigned long newsp, +unsigned long parent_tidp,unsigned long child_tidp); + +#define sys_execve sys_execve +#define sys_clone sys_clone + +#include <asm-generic/syscalls.h> + +extern void *sys_call_table[]; + +static inline long syscall_get_nr (struct task_struct *task, +struct pt_regs *regs) +{ +return regs->r06; +} + +static inline void syscall_get_arguments (struct task_struct *task, +struct pt_regs *regs, +unsigned int i,unsigned int n, +unsigned long *args) +{ +BUG_ON (i + n >6 ); +memcpy (args, &(®s->r00)[i], n *sizeof (args[0 ])); +} +#endif
arch/hexagon/include/asm/unistd.h new file +36 -0
@@ -0,0 +1,36 @@ +/* +* Syscall support for Hexagon +* +* Copyright (c) 2010-2011, Code Aurora Forum. 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. +*/ + +#if !defined(_ASM_HEXAGON_UNISTD_H) || defined(__SYSCALL) +#define _ASM_HEXAGON_UNISTD_H + +/* +* The kernel pulls this unistd.h in three different ways: +* 1. the "normal" way which gets all the __NR defines +* 2. with __SYSCALL defined to produce function declarations +* 3. with __SYSCALL defined to produce syscall table initialization +* See also: syscalltab.c +*/ + +#define sys_mmap2 sys_mmap_pgoff + +#include <asm-generic/unistd.h> + +#endif
arch/hexagon/kernel/syscall.c new file +90 -0
90 lines not on this page · raw message
arch/hexagon/kernel/syscalltab.c new file +32 -0
@@ -0,0 +1,32 @@ +/* +* System call table for Hexagon +* +* Copyright (c) 2010-2011, Code Aurora Forum. 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/syscalls.h> +#include <linux/signal.h> +#include <linux/unistd.h> + +#include <asm/syscall.h> + +#undef __SYSCALL +#define __SYSCALL (nr, call) [nr] = (call), + +void *sys_call_table[__NR_syscalls] = { +#include <asm/unistd.h> +};
Signature · 7 lines
1.7.1 -- Sent by an employee of the Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.