Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v4.16 74 lines 1.4 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* syscall.h */ 3 4#ifndef _ASM_PARISC_SYSCALL_H_ 5#define _ASM_PARISC_SYSCALL_H_ 6 7#include <uapi/linux/audit.h> 8#include <linux/compat.h> 9#include <linux/err.h> 10#include <asm/ptrace.h> 11 12#define NR_syscalls (__NR_Linux_syscalls) 13 14static inline long syscall_get_nr(struct task_struct *tsk, 15 struct pt_regs *regs) 16{ 17 return regs->gr[20]; 18} 19 20static inline void syscall_get_arguments(struct task_struct *tsk, 21 struct pt_regs *regs, unsigned int i, 22 unsigned int n, unsigned long *args) 23{ 24 BUG_ON(i); 25 26 switch (n) { 27 case 6: 28 args[5] = regs->gr[21]; 29 case 5: 30 args[4] = regs->gr[22]; 31 case 4: 32 args[3] = regs->gr[23]; 33 case 3: 34 args[2] = regs->gr[24]; 35 case 2: 36 args[1] = regs->gr[25]; 37 case 1: 38 args[0] = regs->gr[26]; 39 case 0: 40 break; 41 default: 42 BUG(); 43 } 44} 45 46static inline long syscall_get_return_value(struct task_struct *task, 47 struct pt_regs *regs) 48{ 49 return regs->gr[28]; 50} 51 52static inline void syscall_set_return_value(struct task_struct *task, 53 struct pt_regs *regs, 54 int error, long val) 55{ 56 regs->gr[28] = error ? error : val; 57} 58 59static inline void syscall_rollback(struct task_struct *task, 60 struct pt_regs *regs) 61{ 62 /* do nothing */ 63} 64 65static inline int syscall_get_arch(void) 66{ 67 int arch = AUDIT_ARCH_PARISC; 68#ifdef CONFIG_64BIT 69 if (!is_compat_task()) 70 arch = AUDIT_ARCH_PARISC64; 71#endif 72 return arch; 73} 74#endif /*_ASM_PARISC_SYSCALL_H_*/