linux/arch/hexagon/include/asm/syscall.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * Syscall support for the Hexagon architecture
   4 *
   5 * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
   6 */
   7
   8#ifndef _ASM_HEXAGON_SYSCALL_H
   9#define _ASM_HEXAGON_SYSCALL_H
  10
  11#include <uapi/linux/audit.h>
  12#include <linux/err.h>
  13#include <asm/ptrace.h>
  14
  15typedef long (*syscall_fn)(unsigned long, unsigned long,
  16        unsigned long, unsigned long,
  17        unsigned long, unsigned long);
  18
  19#include <asm-generic/syscalls.h>
  20
  21extern void *sys_call_table[];
  22
  23static inline long syscall_get_nr(struct task_struct *task,
  24                                  struct pt_regs *regs)
  25{
  26        return regs->r06;
  27}
  28
  29static inline void syscall_get_arguments(struct task_struct *task,
  30                                         struct pt_regs *regs,
  31                                         unsigned long *args)
  32{
  33        memcpy(args, &(&regs->r00)[0], 6 * sizeof(args[0]));
  34}
  35
  36static inline long syscall_get_error(struct task_struct *task,
  37                                     struct pt_regs *regs)
  38{
  39        return IS_ERR_VALUE(regs->r00) ? regs->r00 : 0;
  40}
  41
  42static inline long syscall_get_return_value(struct task_struct *task,
  43                                            struct pt_regs *regs)
  44{
  45        return regs->r00;
  46}
  47
  48static inline int syscall_get_arch(struct task_struct *task)
  49{
  50        return AUDIT_ARCH_HEXAGON;
  51}
  52
  53#endif
  54