Use the kernel's MAX_ERRNO in the syscall stubs.

Bug: http://code.google.com/p/android/issues/detail?id=53104
Change-Id: Iaabf7025b153e96dc5eca231a33a32d4cb7d8116
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index 5e519de..91e7a57 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -46,6 +46,7 @@
 #
 
 x86_header = """/* autogenerated by gensyscalls.py */
+#include <linux/err.h>
 #include <machine/asm.h>
 #include <sys/linux-syscalls.h>
 
@@ -56,7 +57,7 @@
 
 x86_call = """    movl    $%(idname)s, %%eax
     int     $0x80
-    cmpl    $-129, %%eax
+    cmpl    $-MAX_ERRNO, %%eax
     jb      1f
     negl    %%eax
     pushl   %%eax
@@ -75,6 +76,7 @@
 #
 
 arm_header = """/* autogenerated by gensyscalls.py */
+#include <linux/err.h>
 #include <machine/asm.h>
 #include <sys/linux-syscalls.h>
 
@@ -86,9 +88,10 @@
     ldr     r7, =%(idname)s
     swi     #0
     mov     r7, ip
-    movs    r0, r0
-    bxpl    lr
-    b       __set_syscall_errno
+    cmn     r0, #(MAX_ERRNO + 1)
+    bxls    lr
+    neg     r0, r0
+    b       __set_errno
 END(%(fname)s)
 """
 
@@ -100,9 +103,10 @@
     ldr     r7, =%(idname)s
     swi     #0
     ldmfd   sp!, {r4, r5, r6, r7}
-    movs    r0, r0
-    bxpl    lr
-    b       __set_syscall_errno
+    cmn     r0, #(MAX_ERRNO + 1)
+    bxls    lr
+    neg     r0, r0
+    b       __set_errno
 END(%(fname)s)
 """