syscall.h (1351B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2 3#ifndef __ASM_SYSCALL_H 4#define __ASM_SYSCALL_H 5 6#include <linux/sched.h> 7#include <linux/err.h> 8#include <abi/regdef.h> 9#include <uapi/linux/audit.h> 10 11extern void *sys_call_table[]; 12 13static inline int 14syscall_get_nr(struct task_struct *task, struct pt_regs *regs) 15{ 16 return regs_syscallid(regs); 17} 18 19static inline void 20syscall_set_nr(struct task_struct *task, struct pt_regs *regs, 21 int sysno) 22{ 23 regs_syscallid(regs) = sysno; 24} 25 26static inline void 27syscall_rollback(struct task_struct *task, struct pt_regs *regs) 28{ 29 regs->a0 = regs->orig_a0; 30} 31 32static inline long 33syscall_get_error(struct task_struct *task, struct pt_regs *regs) 34{ 35 unsigned long error = regs->a0; 36 37 return IS_ERR_VALUE(error) ? error : 0; 38} 39 40static inline long 41syscall_get_return_value(struct task_struct *task, struct pt_regs *regs) 42{ 43 return regs->a0; 44} 45 46static inline void 47syscall_set_return_value(struct task_struct *task, struct pt_regs *regs, 48 int error, long val) 49{ 50 regs->a0 = (long) error ?: val; 51} 52 53static inline void 54syscall_get_arguments(struct task_struct *task, struct pt_regs *regs, 55 unsigned long *args) 56{ 57 args[0] = regs->orig_a0; 58 args++; 59 memcpy(args, ®s->a1, 5 * sizeof(args[0])); 60} 61 62static inline int 63syscall_get_arch(struct task_struct *task) 64{ 65 return AUDIT_ARCH_CSKY; 66} 67 68#endif /* __ASM_SYSCALL_H */