Xenomai
3.3.2
Loading...
Searching...
No Matches
syscall.h
1
/*
2
* SPDX-License-Identifier: GPL-2.0
3
*
4
* Copyright (C) 2015 Dmitriy Cherkasov <dmitriy@mperpetuo.com>
5
* Copyright (C) 2021 Philippe Gerum <rpm@xenomai.org>
6
*/
7
8
#ifndef _COBALT_ARM64_SYSCALL_H
9
#define _COBALT_ARM64_SYSCALL_H
10
11
#include <linux/errno.h>
12
#include <asm/ptrace.h>
13
#include <asm-generic/xenomai/syscall.h>
14
15
/*
16
* Cobalt and Linux syscall numbers can be fetched from syscallno,
17
* masking out the __COBALT_SYSCALL_BIT marker.
18
*/
19
#define __xn_reg_sys(__regs) ((unsigned long)(__regs)->syscallno)
20
#define __xn_syscall_p(regs) ((__xn_reg_sys(regs) & __COBALT_SYSCALL_BIT) != 0)
21
22
#ifdef CONFIG_XENO_ARCH_SYS3264
23
#define __xn_syscall(__regs) __COBALT_SYSNR32emu(__xn_reg_sys(__regs) \
24
& ~__COBALT_SYSCALL_BIT)
25
#else
26
#define __xn_syscall(__regs) ((unsigned long)(__xn_reg_sys(__regs) & ~__COBALT_SYSCALL_BIT))
27
#endif
28
29
#define __xn_reg_rval(__regs) ((__regs)->regs[0])
30
#define __xn_reg_pc(__regs) ((__regs)->pc)
31
#define __xn_reg_sp(__regs) ((__regs)->sp)
32
33
/*
34
* Root syscall number with predicate (valid only if
35
* !__xn_syscall_p(__regs)).
36
*/
37
#define __xn_rootcall_p(__regs, __code) \
38
({ \
39
*(__code) = __xn_reg_sys(__regs); \
40
*(__code) < NR_syscalls; \
41
})
42
43
static
inline
void
__xn_error_return(
struct
pt_regs *regs,
int
v)
44
{
45
__xn_reg_rval(regs) = v;
46
}
47
48
static
inline
void
__xn_status_return(
struct
pt_regs *regs,
long
v)
49
{
50
__xn_reg_rval(regs) = v;
51
}
52
53
static
inline
int
__xn_interrupted_p(
struct
pt_regs *regs)
54
{
55
return
__xn_reg_rval(regs) == -EINTR;
56
}
57
58
#endif
/* !_COBALT_ARM64_SYSCALL_H */
kernel
cobalt
arch
arm64
include
asm
xenomai
syscall.h
Generated by
1.9.8