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 (1363B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Copyright Altera Corporation (C) <2014>. All rights reserved
      4 */
      5
      6#ifndef __ASM_NIOS2_SYSCALL_H__
      7#define __ASM_NIOS2_SYSCALL_H__
      8
      9#include <uapi/linux/audit.h>
     10#include <linux/err.h>
     11#include <linux/sched.h>
     12
     13static inline int syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
     14{
     15	return regs->r2;
     16}
     17
     18static inline void syscall_rollback(struct task_struct *task,
     19				struct pt_regs *regs)
     20{
     21	regs->r2 = regs->orig_r2;
     22	regs->r7 = regs->orig_r7;
     23}
     24
     25static inline long syscall_get_error(struct task_struct *task,
     26				struct pt_regs *regs)
     27{
     28	return regs->r7 ? regs->r2 : 0;
     29}
     30
     31static inline long syscall_get_return_value(struct task_struct *task,
     32	struct pt_regs *regs)
     33{
     34	return regs->r2;
     35}
     36
     37static inline void syscall_set_return_value(struct task_struct *task,
     38	struct pt_regs *regs, int error, long val)
     39{
     40	if (error) {
     41		/* error < 0, but nios2 uses > 0 return value */
     42		regs->r2 = -error;
     43		regs->r7 = 1;
     44	} else {
     45		regs->r2 = val;
     46		regs->r7 = 0;
     47	}
     48}
     49
     50static inline void syscall_get_arguments(struct task_struct *task,
     51	struct pt_regs *regs, unsigned long *args)
     52{
     53	*args++ = regs->r4;
     54	*args++ = regs->r5;
     55	*args++ = regs->r6;
     56	*args++ = regs->r7;
     57	*args++ = regs->r8;
     58	*args   = regs->r9;
     59}
     60
     61static inline int syscall_get_arch(struct task_struct *task)
     62{
     63	return AUDIT_ARCH_NIOS2;
     64}
     65
     66#endif