1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Syscall support for the Hexagon architecture 4 * 5 * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved. 6 */ 7 8 #ifndef _ASM_HEXAGON_SYSCALL_H 9 #define _ASM_HEXAGON_SYSCALL_H 10 11 #include <uapi/linux/audit.h> 12 #include <linux/err.h> 13 #include <asm/ptrace.h> 14 15 typedef long (*syscall_fn)(unsigned long, unsigned long, 16 unsigned long, unsigned long, 17 unsigned long, unsigned long); 18 19 #include <asm-generic/syscalls.h> 20 21 extern void *sys_call_table[]; 22 23 static inline long syscall_get_nr(struct task_struct *task, 24 struct pt_regs *regs) 25 { 26 return regs->r06; 27 } 28 29 static inline void syscall_get_arguments(struct task_struct *task, 30 struct pt_regs *regs, 31 unsigned long *args) 32 { 33 memcpy(args, &(®s->r00)[0], 6 * sizeof(args[0])); 34 } 35 36 static inline long syscall_get_error(struct task_struct *task, 37 struct pt_regs *regs) 38 { 39 return IS_ERR_VALUE(regs->r00) ? regs->r00 : 0; 40 } 41 42 static inline long syscall_get_return_value(struct task_struct *task, 43 struct pt_regs *regs) 44 { 45 return regs->r00; 46 } 47 48 static inline int syscall_get_arch(struct task_struct *task) 49 { 50 return AUDIT_ARCH_HEXAGON; 51 } 52 53 #endif 54