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