Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/csky/include/asm/syscall.h
26493 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
3
#ifndef __ASM_SYSCALL_H
4
#define __ASM_SYSCALL_H
5
6
#include <linux/sched.h>
7
#include <linux/err.h>
8
#include <abi/regdef.h>
9
#include <uapi/linux/audit.h>
10
11
extern void *sys_call_table[];
12
13
static inline int
14
syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
15
{
16
return regs_syscallid(regs);
17
}
18
19
static inline void
20
syscall_set_nr(struct task_struct *task, struct pt_regs *regs,
21
int sysno)
22
{
23
regs_syscallid(regs) = sysno;
24
}
25
26
static inline void
27
syscall_rollback(struct task_struct *task, struct pt_regs *regs)
28
{
29
regs->a0 = regs->orig_a0;
30
}
31
32
static inline long
33
syscall_get_error(struct task_struct *task, struct pt_regs *regs)
34
{
35
unsigned long error = regs->a0;
36
37
return IS_ERR_VALUE(error) ? error : 0;
38
}
39
40
static inline long
41
syscall_get_return_value(struct task_struct *task, struct pt_regs *regs)
42
{
43
return regs->a0;
44
}
45
46
static inline void
47
syscall_set_return_value(struct task_struct *task, struct pt_regs *regs,
48
int error, long val)
49
{
50
regs->a0 = (long) error ?: val;
51
}
52
53
static inline void
54
syscall_get_arguments(struct task_struct *task, struct pt_regs *regs,
55
unsigned long *args)
56
{
57
args[0] = regs->orig_a0;
58
args++;
59
memcpy(args, &regs->a1, 5 * sizeof(args[0]));
60
}
61
62
static inline void
63
syscall_set_arguments(struct task_struct *task, struct pt_regs *regs,
64
const unsigned long *args)
65
{
66
memcpy(&regs->a0, args, 6 * sizeof(regs->a0));
67
/*
68
* Also copy the first argument into orig_a0
69
* so that syscall_get_arguments() would return it
70
* instead of the previous value.
71
*/
72
regs->orig_a0 = regs->a0;
73
}
74
75
static inline int
76
syscall_get_arch(struct task_struct *task)
77
{
78
return AUDIT_ARCH_CSKY;
79
}
80
81
#endif /* __ASM_SYSCALL_H */
82
83