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

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

INCLUDED FROM


DEFINITIONS

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

   1 /* SPDX-License-Identifier: GPL-2.0-or-later */
   2 /*
   3  * OpenRISC Linux
   4  *
   5  * Linux architectural port borrowing liberally from similar works of
   6  * others.  All original copyrights apply as per the original source
   7  * declaration.
   8  *
   9  * OpenRISC implementation:
  10  * Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com>
  11  * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
  12  * et al.
  13  */
  14 
  15 #ifndef __ASM_OPENRISC_SYSCALL_H__
  16 #define __ASM_OPENRISC_SYSCALL_H__
  17 
  18 #include <uapi/linux/audit.h>
  19 #include <linux/err.h>
  20 #include <linux/sched.h>
  21 
  22 static inline int
  23 syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
  24 {
  25         return regs->orig_gpr11;
  26 }
  27 
  28 static inline void
  29 syscall_rollback(struct task_struct *task, struct pt_regs *regs)
  30 {
  31         regs->gpr[11] = regs->orig_gpr11;
  32 }
  33 
  34 static inline long
  35 syscall_get_error(struct task_struct *task, struct pt_regs *regs)
  36 {
  37         return IS_ERR_VALUE(regs->gpr[11]) ? regs->gpr[11] : 0;
  38 }
  39 
  40 static inline long
  41 syscall_get_return_value(struct task_struct *task, struct pt_regs *regs)
  42 {
  43         return regs->gpr[11];
  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->gpr[11] = (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         memcpy(args, &regs->gpr[3], 6 * sizeof(args[0]));
  58 }
  59 
  60 static inline void
  61 syscall_set_arguments(struct task_struct *task, struct pt_regs *regs,
  62                       const unsigned long *args)
  63 {
  64         memcpy(&regs->gpr[3], args, 6 * sizeof(args[0]));
  65 }
  66 
  67 static inline int syscall_get_arch(struct task_struct *task)
  68 {
  69         return AUDIT_ARCH_OPENRISC;
  70 }
  71 #endif

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