linux/arch/parisc/include/asm/syscall.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/* syscall.h */
   3
   4#ifndef _ASM_PARISC_SYSCALL_H_
   5#define _ASM_PARISC_SYSCALL_H_
   6
   7#include <uapi/linux/audit.h>
   8#include <linux/compat.h>
   9#include <linux/err.h>
  10#include <asm/ptrace.h>
  11
  12#define NR_syscalls (__NR_Linux_syscalls)
  13
  14static inline long syscall_get_nr(struct task_struct *tsk,
  15                                  struct pt_regs *regs)
  16{
  17        return regs->gr[20];
  18}
  19
  20static inline void syscall_get_arguments(struct task_struct *tsk,
  21                                         struct pt_regs *regs,
  22                                         unsigned long *args)
  23{
  24        args[5] = regs->gr[21];
  25        args[4] = regs->gr[22];
  26        args[3] = regs->gr[23];
  27        args[2] = regs->gr[24];
  28        args[1] = regs->gr[25];
  29        args[0] = regs->gr[26];
  30}
  31
  32static inline long syscall_get_error(struct task_struct *task,
  33                                     struct pt_regs *regs)
  34{
  35        unsigned long error = regs->gr[28];
  36        return IS_ERR_VALUE(error) ? error : 0;
  37}
  38
  39static inline long syscall_get_return_value(struct task_struct *task,
  40                                                struct pt_regs *regs)
  41{
  42        return regs->gr[28];
  43}
  44
  45static inline void syscall_set_return_value(struct task_struct *task,
  46                                            struct pt_regs *regs,
  47                                            int error, long val)
  48{
  49        regs->gr[28] = error ? error : val;
  50}
  51
  52static inline void syscall_rollback(struct task_struct *task,
  53                                    struct pt_regs *regs)
  54{
  55        /* do nothing */
  56}
  57
  58static inline int syscall_get_arch(struct task_struct *task)
  59{
  60        int arch = AUDIT_ARCH_PARISC;
  61#ifdef CONFIG_64BIT
  62        if (!__is_compat_task(task))
  63                arch = AUDIT_ARCH_PARISC64;
  64#endif
  65        return arch;
  66}
  67#endif /*_ASM_PARISC_SYSCALL_H_*/
  68