diff options
Diffstat (limited to 'src/linux/riscv64/raw_syscall.h')
-rw-r--r-- | src/linux/riscv64/raw_syscall.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/linux/riscv64/raw_syscall.h b/src/linux/riscv64/raw_syscall.h new file mode 100644 index 000000000..932975cdb --- /dev/null +++ b/src/linux/riscv64/raw_syscall.h @@ -0,0 +1,29 @@ +/* + * Raw syscalls. + * + * Copyright (c) 2018-2019 The strace developers. + * All rights reserved. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + */ + +#ifndef STRACE_RAW_SYSCALL_H +# define STRACE_RAW_SYSCALL_H + +# include "kernel_types.h" + +static inline kernel_ulong_t +raw_syscall_0(const kernel_ulong_t nr, kernel_ulong_t *err) +{ + *err = 0; + register kernel_ulong_t a7 __asm__("a7") = nr; + register kernel_ulong_t a0 __asm__("a0"); + __asm__ __volatile__("scall" + : "=r"(a0) + : "r"(a7) + : "memory"); + return a0; +} +# define raw_syscall_0 raw_syscall_0 + +#endif /* !STRACE_RAW_SYSCALL_H */ |