summaryrefslogtreecommitdiff
path: root/src/linux/riscv64/raw_syscall.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/linux/riscv64/raw_syscall.h')
-rw-r--r--src/linux/riscv64/raw_syscall.h29
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 */