linux/arch/parisc/include/asm/syscall.h
<<
>>
Prefs
   1/* syscall.h */
   2
   3#ifndef _ASM_PARISC_SYSCALL_H_
   4#define _ASM_PARISC_SYSCALL_H_
   5
   6#include <uapi/linux/audit.h>
   7#include <linux/compat.h>
   8#include <linux/err.h>
   9#include <asm/ptrace.h>
  10
  11static inline long syscall_get_nr(struct task_struct *tsk,
  12                                  struct pt_regs *regs)
  13{
  14        return regs->gr[20];
  15}
  16
  17static inline void syscall_get_arguments(struct task_struct *tsk,
  18                                         struct pt_regs *regs, unsigned int i,
  19                                         unsigned int n, unsigned long *args)
  20{
  21        BUG_ON(i);
  22
  23        switch (n) {
  24        case 6:
  25                args[5] = regs->gr[21];
  26        case 5:
  27                args[4] = regs->gr[22];
  28        case 4:
  29                args[3] = regs->gr[23];
  30        case 3:
  31                args[2] = regs->gr[24];
  32        case 2:
  33                args[1] = regs->gr[25];
  34        case 1:
  35                args[0] = regs->gr[26];
  36                break;
  37        default:
  38                BUG();
  39        }
  40}
  41
  42static inline int syscall_get_arch(void)
  43{
  44        int arch = AUDIT_ARCH_PARISC;
  45#ifdef CONFIG_64BIT
  46        if (!is_compat_task())
  47                arch = AUDIT_ARCH_PARISC64;
  48#endif
  49        return arch;
  50}
  51#endif /*_ASM_PARISC_SYSCALL_H_*/
  52