|
@@ -0,0 +1,41 @@
|
|
|
|
|
+#undef _syscall0
|
|
|
|
|
+#undef _syscall1
|
|
|
|
|
+#undef _syscall2
|
|
|
|
|
+#undef _syscall3
|
|
|
|
|
+#undef _syscall4
|
|
|
|
|
+#undef _syscall5
|
|
|
|
|
+
|
|
|
|
|
+#include "str_syscalls.h"
|
|
|
|
|
+
|
|
|
|
|
+#undef uClibc_syscall_exit
|
|
|
|
|
+#define uClibc_syscall_exit(type,name,type1,arg1) \
|
|
|
|
|
+__asm__ ( \
|
|
|
|
|
+".text\n.align 4\n.global "###name"\n"#name":;\npushl %ebp;\n" \
|
|
|
|
|
+"movl %esp,%ebp;\nsubl $4,%esp;\npushl %ebx;\nmovl 8(%ebp),%ebx;\n" \
|
|
|
|
|
+"jmp _start_exit" \
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+#define unified_syscall_body(name) \
|
|
|
|
|
+__asm__ ( \
|
|
|
|
|
+".text\n.align 4\n.global "###name"\n"#name":\nmovb $"__STR_NR_##name \
|
|
|
|
|
+",%al;\n jmp __uClibc_syscall" \
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+#define _syscall0(type,name) \
|
|
|
|
|
+unified_syscall_body(name)
|
|
|
|
|
+
|
|
|
|
|
+#define _syscall1(type,name,type1,arg1) \
|
|
|
|
|
+unified_syscall_body(name)
|
|
|
|
|
+
|
|
|
|
|
+#define _syscall2(type,name,type1,arg1,type2,arg2) \
|
|
|
|
|
+unified_syscall_body(name)
|
|
|
|
|
+
|
|
|
|
|
+#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
|
|
|
|
|
+unified_syscall_body(name)
|
|
|
|
|
+
|
|
|
|
|
+#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
|
|
|
|
|
+unified_syscall_body(name)
|
|
|
|
|
+
|
|
|
|
|
+#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \
|
|
|
|
|
+unified_syscall_body(name)
|
|
|
|
|
+
|