cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

syscall.h (1477B)


      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,
     22					 unsigned long *args)
     23{
     24	args[5] = regs->gr[21];
     25	args[4] = regs->gr[22];
     26	args[3] = regs->gr[23];
     27	args[2] = regs->gr[24];
     28	args[1] = regs->gr[25];
     29	args[0] = regs->gr[26];
     30}
     31
     32static inline long syscall_get_error(struct task_struct *task,
     33				     struct pt_regs *regs)
     34{
     35	unsigned long error = regs->gr[28];
     36	return IS_ERR_VALUE(error) ? error : 0;
     37}
     38
     39static inline long syscall_get_return_value(struct task_struct *task,
     40						struct pt_regs *regs)
     41{
     42	return regs->gr[28];
     43}
     44
     45static inline void syscall_set_return_value(struct task_struct *task,
     46					    struct pt_regs *regs,
     47					    int error, long val)
     48{
     49	regs->gr[28] = error ? error : val;
     50}
     51
     52static inline void syscall_rollback(struct task_struct *task,
     53				    struct pt_regs *regs)
     54{
     55	/* do nothing */
     56}
     57
     58static inline int syscall_get_arch(struct task_struct *task)
     59{
     60	int arch = AUDIT_ARCH_PARISC;
     61#ifdef CONFIG_64BIT
     62	if (!__is_compat_task(task))
     63		arch = AUDIT_ARCH_PARISC64;
     64#endif
     65	return arch;
     66}
     67#endif /*_ASM_PARISC_SYSCALL_H_*/