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