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 */
48