Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/openrisc/include/asm/syscall.h
26481 views
1
/* SPDX-License-Identifier: GPL-2.0-or-later */
2
/*
3
* OpenRISC Linux
4
*
5
* Linux architectural port borrowing liberally from similar works of
6
* others. All original copyrights apply as per the original source
7
* declaration.
8
*
9
* OpenRISC implementation:
10
* Copyright (C) 2003 Matjaz Breskvar <[email protected]>
11
* Copyright (C) 2010-2011 Jonas Bonn <[email protected]>
12
* et al.
13
*/
14
15
#ifndef __ASM_OPENRISC_SYSCALL_H__
16
#define __ASM_OPENRISC_SYSCALL_H__
17
18
#include <uapi/linux/audit.h>
19
#include <linux/err.h>
20
#include <linux/sched.h>
21
22
static inline int
23
syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
24
{
25
return regs->orig_gpr11;
26
}
27
28
static inline void
29
syscall_set_nr(struct task_struct *task, struct pt_regs *regs, int nr)
30
{
31
regs->orig_gpr11 = nr;
32
}
33
34
static inline void
35
syscall_rollback(struct task_struct *task, struct pt_regs *regs)
36
{
37
regs->gpr[11] = regs->orig_gpr11;
38
}
39
40
static inline long
41
syscall_get_error(struct task_struct *task, struct pt_regs *regs)
42
{
43
return IS_ERR_VALUE(regs->gpr[11]) ? regs->gpr[11] : 0;
44
}
45
46
static inline long
47
syscall_get_return_value(struct task_struct *task, struct pt_regs *regs)
48
{
49
return regs->gpr[11];
50
}
51
52
static inline void
53
syscall_set_return_value(struct task_struct *task, struct pt_regs *regs,
54
int error, long val)
55
{
56
regs->gpr[11] = (long) error ?: val;
57
}
58
59
static inline void
60
syscall_get_arguments(struct task_struct *task, struct pt_regs *regs,
61
unsigned long *args)
62
{
63
memcpy(args, &regs->gpr[3], 6 * sizeof(args[0]));
64
}
65
66
static inline void
67
syscall_set_arguments(struct task_struct *task, struct pt_regs *regs,
68
const unsigned long *args)
69
{
70
memcpy(&regs->gpr[3], args, 6 * sizeof(args[0]));
71
}
72
73
static inline int syscall_get_arch(struct task_struct *task)
74
{
75
return AUDIT_ARCH_OPENRISC;
76
}
77
#endif
78
79