|
@@ -101,6 +101,14 @@ type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \
|
|
|
return (type) (INLINE_SYSCALL(name, 5, arg1, arg2, arg3, arg4, arg5)); \
|
|
|
}
|
|
|
|
|
|
+#undef _syscall6
|
|
|
+#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
|
|
|
+ type5,arg5,type6,arg6) \
|
|
|
+type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5, type6 arg6) \
|
|
|
+{ \
|
|
|
+return (type) (INLINE_SYSCALL(name, 6, arg1, arg2, arg3, arg4, arg5, arg6)); \
|
|
|
+}
|
|
|
+
|
|
|
#define INLINE_SYSCALL(name, nr, args...) \
|
|
|
({ \
|
|
|
unsigned int resultvar; \
|
|
@@ -126,6 +134,7 @@ return (type) (INLINE_SYSCALL(name, 5, arg1, arg2, arg3, arg4, arg5)); \
|
|
|
#define LOADARGS_3 LOADARGS_1
|
|
|
#define LOADARGS_4 LOADARGS_1
|
|
|
#define LOADARGS_5 LOADARGS_1
|
|
|
+#define LOADARGS_6 LOADARGS_1 "push %%ebp ; movl %7, %%ebp\n\t"
|
|
|
|
|
|
#define RESTOREARGS_0
|
|
|
#define RESTOREARGS_1 \
|
|
@@ -134,6 +143,7 @@ return (type) (INLINE_SYSCALL(name, 5, arg1, arg2, arg3, arg4, arg5)); \
|
|
|
#define RESTOREARGS_3 RESTOREARGS_1
|
|
|
#define RESTOREARGS_4 RESTOREARGS_1
|
|
|
#define RESTOREARGS_5 RESTOREARGS_1
|
|
|
+#define RESTOREARGS_6 "pop %%ebp\n\t" RESTOREARGS_1
|
|
|
|
|
|
#define ASMFMT_0()
|
|
|
#define ASMFMT_1(arg1) \
|
|
@@ -146,6 +156,8 @@ return (type) (INLINE_SYSCALL(name, 5, arg1, arg2, arg3, arg4, arg5)); \
|
|
|
, "aD" (arg1), "c" (arg2), "d" (arg3), "S" (arg4)
|
|
|
#define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \
|
|
|
, "a" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5)
|
|
|
+#define ASMFMT_6(arg1, arg2, arg3, arg4, arg5, arg6) \
|
|
|
+ , "a" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5), "m" (arg6)
|
|
|
|
|
|
#endif /* __ASSEMBLER__ */
|
|
|
#endif /* _BITS_SYSCALLS_H */
|