syscall_get_* functions are required to be implemented on all architectures in order to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request. This introduces asm/syscall.h on m68k implementing all 5 syscall_get_* functions as documented in asm-generic/syscall.h: syscall_get_nr, syscall_get_arguments, syscall_get_error, syscall_get_return_value, and syscall_get_arch. Cc: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> Cc: Oleg Nesterov <oleg@xxxxxxxxxx> Cc: Andy Lutomirski <luto@xxxxxxxxxx> Cc: Elvira Khabirova <lineprinter@xxxxxxxxxxxx> Cc: Eugene Syromyatnikov <esyr@xxxxxxxxxx> Cc: linux-m68k@xxxxxxxxxxxxxxxxxxxx Signed-off-by: Dmitry V. Levin <ldv@xxxxxxxxxxxx> --- Notes: v5: added syscall_get_nr, syscall_get_arguments, syscall_get_error, and syscall_get_return_value v1: added syscall_get_arch arch/m68k/include/asm/syscall.h | 39 +++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 arch/m68k/include/asm/syscall.h diff --git a/arch/m68k/include/asm/syscall.h b/arch/m68k/include/asm/syscall.h new file mode 100644 index 000000000000..75a24cf90620 --- /dev/null +++ b/arch/m68k/include/asm/syscall.h @@ -0,0 +1,39 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_M68K_SYSCALL_H +#define _ASM_M68K_SYSCALL_H + +#include <uapi/linux/audit.h> + +static inline int +syscall_get_nr(struct task_struct *task, struct pt_regs *regs) +{ + return regs->orig_d0; +} + +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->d1 + i, n * sizeof(args[0])); +} + +static inline long +syscall_get_error(struct task_struct *task, struct pt_regs *regs) +{ + return IS_ERR_VALUE(regs->d0) ? regs->d0 : 0; +} + +static inline long +syscall_get_return_value(struct task_struct *task, struct pt_regs *regs) +{ + return regs->d0; +} + +static inline int +syscall_get_arch(void) +{ + return AUDIT_ARCH_M68K; +} + +#endif /* _ASM_M68K_SYSCALL_H */ -- ldv