]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/uclibc/lib/contrib/uclibc/libc/sysdeps/linux/bfin/bits/syscalls.h
update
[l4.git] / l4 / pkg / uclibc / lib / contrib / uclibc / libc / sysdeps / linux / bfin / bits / syscalls.h
1 #ifndef _BITS_SYSCALLS_H
2 #define _BITS_SYSCALLS_H
3 #ifndef _SYSCALL_H
4 # error "Never use <bits/syscalls.h> directly; include <sys/syscall.h> instead."
5 #endif
6
7 #ifndef __ASSEMBLER__
8
9 #define INTERNAL_SYSCALL_NCS(name, err, nr, args...)    \
10 (__extension__ \
11  ({                                                     \
12         long __res;                                     \
13         __asm__ __volatile__ (                          \
14                 "excpt 0;\n\t"                          \
15                 : "=q0" (__res)                         \
16                 : "qA"  (name) ASMFMT_##nr(args)        \
17                 : "memory","CC");                       \
18         __res;                                          \
19   }) \
20 )
21 #define ASMFMT_0()
22
23 #define ASMFMT_1(arg1) \
24         , "q0" ((long)(arg1))
25
26 #define ASMFMT_2(arg1, arg2) \
27         ASMFMT_1(arg1) \
28         , "q1" ((long)(arg2))
29
30 #define ASMFMT_3(arg1, arg2, arg3) \
31         ASMFMT_2(arg1, arg2) \
32         , "q2" ((long)(arg3))
33
34 #define ASMFMT_4(arg1, arg2, arg3, arg4) \
35         ASMFMT_3(arg1, arg2, arg3) \
36         , "q3" ((long)(arg4))
37
38 #define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \
39         ASMFMT_4(arg1, arg2, arg3, arg4) \
40         , "q4" ((long)(arg5))
41
42 #define ASMFMT_6(arg1, arg2, arg3, arg4, arg5, arg6) \
43         ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \
44         , "q5" ((long)(arg6))
45
46 #endif /* __ASSEMBLER__ */
47 #endif /* _BITS_SYSCALLS_H */