root/arch/csky/include/asm/syscall.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. syscall_get_nr
  2. syscall_set_nr
  3. syscall_rollback
  4. syscall_get_error
  5. syscall_get_return_value
  6. syscall_set_return_value
  7. syscall_get_arguments
  8. syscall_set_arguments
  9. syscall_get_arch

   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 
  11 extern void *sys_call_table[];
  12 
  13 static inline int
  14 syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
  15 {
  16         return regs_syscallid(regs);
  17 }
  18 
  19 static inline void
  20 syscall_set_nr(struct task_struct *task, struct pt_regs *regs,
  21                int sysno)
  22 {
  23         regs_syscallid(regs) = sysno;
  24 }
  25 
  26 static inline void
  27 syscall_rollback(struct task_struct *task, struct pt_regs *regs)
  28 {
  29         regs->a0 = regs->orig_a0;
  30 }
  31 
  32 static inline long
  33 syscall_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 
  40 static inline long
  41 syscall_get_return_value(struct task_struct *task, struct pt_regs *regs)
  42 {
  43         return regs->a0;
  44 }
  45 
  46 static inline void
  47 syscall_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 
  53 static inline void
  54 syscall_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, &regs->a1, 5 * sizeof(args[0]));
  60 }
  61 
  62 static inline void
  63 syscall_set_arguments(struct task_struct *task, struct pt_regs *regs,
  64                       const unsigned long *args)
  65 {
  66         regs->orig_a0 = args[0];
  67         args++;
  68         memcpy(&regs->a1, args, 5 * sizeof(regs->a1));
  69 }
  70 
  71 static inline int
  72 syscall_get_arch(struct task_struct *task)
  73 {
  74         return AUDIT_ARCH_CSKY;
  75 }
  76 
  77 #endif  /* __ASM_SYSCALL_H */

/* [<][>][^][v][top][bottom][index][help] */