zte's code,first commit

Change-Id: I9a04da59e459a9bc0d67f101f700d9d7dc8d681b
diff --git a/ap/build/uClibc/libc/sysdeps/linux/i386/syscall.S b/ap/build/uClibc/libc/sysdeps/linux/i386/syscall.S
new file mode 100644
index 0000000..b9f65fe
--- /dev/null
+++ b/ap/build/uClibc/libc/sysdeps/linux/i386/syscall.S
@@ -0,0 +1,50 @@
+/*
+ * June 27, 2001             Manuel Novoa III
+ *
+ * This is a heavily modified version of gcc's output for the _syscall5 macro.
+ * The idea (originally from dietlibc) is that all syscall functions simply set
+ * the syscall number as the first argument, then set the syscall arguments as
+ * the next up-to-five arguments, and then jump here.  All the common work is
+ * done by syscall(), saving a fair amount of generated code when a number of
+ * syscalls are used.  The (potential) cost is some unnecessary pushes, pops,
+ * and movs but the execution time penalty should be relatively small compared
+ * to the cost of the syscall itself.
+ *
+ * July 24, 2002 
+ *
+ * Modified by Erik Andersen to take all function parameters from off the stack
+ * like a proper function and eliminates the old 255 syscall number limit.  So
+ * now we can just call this as a function as syscall() per the function
+ * prototype in unistd.h, so to call _exit(42) you can just call.
+ *         syscall(__NR_exit, 42);
+ * and things will just work.
+ */
+
+.text
+.global syscall
+.type   syscall,%function
+syscall:
+	pushl %ebp
+	pushl %edi
+	pushl %esi
+	pushl %ebx
+
+	movl  44(%esp),%ebp	/* Load the 6 syscall argument registers */
+	movl  40(%esp),%edi
+	movl  36(%esp),%esi
+	movl  32(%esp),%edx
+	movl  28(%esp),%ecx
+	movl  24(%esp),%ebx
+	movl  20(%esp),%eax	/* Load syscall number into %eax.  */
+	int $0x80
+
+	popl %ebx
+	popl %esi
+	popl %edi
+	popl %ebp
+
+	cmpl $-4095,%eax
+	jae  __syscall_error
+	ret			/* Return to caller.  */
+
+.size syscall,.-syscall