1 /*
2 * Copyright (c) 2018-2021 The strace developers.
3 * All rights reserved.
4 *
5 * SPDX-License-Identifier: LGPL-2.1-or-later
6 */
7
8 #ifndef STRACE_RAW_SYSCALL_H
9 # define STRACE_RAW_SYSCALL_H
10
11 # include "kernel_types.h"
12
13 static inline kernel_ulong_t
14 raw_syscall_0(const kernel_ulong_t nr, kernel_ulong_t *err)
15 {
16 # if defined(__CSKYABIV2__)
17 register kernel_ulong_t scno __asm__("r7") = nr;
18 # else
19 register kernel_ulong_t scno __asm__("r1") = nr;
20 # endif
21 register kernel_ulong_t a0 __asm__("a0");
22 asm volatile("trap 0"
23 : "+r"(scno), "=r"(a0)
24 :
25 : "memory");
26
27 *err = 0;
28 return a0;
29 }
30 # define raw_syscall_0 raw_syscall_0
31
32 #endif /* !STRACE_RAW_SYSCALL_H */