diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index aaa3de3..26cf3a5 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -48,7 +48,7 @@
 x86_header = """/* autogenerated by gensyscalls.py */
 #include <linux/err.h>
 #include <machine/asm.h>
-#include <sys/linux-syscalls.h>
+#include <asm/unistd.h>
 
 ENTRY(%(fname)s)
 """
@@ -115,7 +115,7 @@
 #
 
 mips_call = """/* autogenerated by gensyscalls.py */
-#include <sys/linux-syscalls.h>
+#include <asm/unistd.h>
     .text
     .globl %(fname)s
     .align 4
@@ -303,9 +303,19 @@
                 t["asm-mips"] = self.mips_genstub(syscall_func,"__NR_"+syscall_name)
 
 
-    def gen_NR_syscall(self, glibc_fp, linux_fp, name, id):
+    def gen_NR_syscall(self, linux_fp, name, id):
         linux_fp.write("#define __NR_%-25s    (__NR_SYSCALL_BASE + %d)\n" % (name,id))
-        glibc_fp.write("#define SYS_%-25s __NR_%s\n" % (name, name))
+
+
+    def scan_linux_unistd_h(self, fp, path):
+        pattern = re.compile(r'^#define __NR_([a-z]\S+) .*')
+        syscalls = set() # MIPS defines everything three times; work around that.
+        for line in open(path):
+            m = re.search(pattern, line)
+            if m:
+                syscalls.add(m.group(1))
+        for syscall in sorted(syscalls):
+            fp.write("#define SYS_%s __NR_%s\n" % (syscall, syscall))
 
 
     def gen_linux_syscalls_h(self):
@@ -315,6 +325,18 @@
         glibc_fp.write("#ifndef _BIONIC_GLIBC_SYSCALLS_H_\n")
         glibc_fp.write("#define _BIONIC_GLIBC_SYSCALLS_H_\n")
 
+        glibc_fp.write("#if defined(__arm__)\n")
+        self.scan_linux_unistd_h(glibc_fp, "libc/kernel/arch-arm/asm/unistd.h")
+        glibc_fp.write("#elif defined(__mips__)\n")
+        self.scan_linux_unistd_h(glibc_fp, "libc/kernel/arch-mips/asm/unistd.h")
+        glibc_fp.write("#elif defined(__i386__)\n")
+        self.scan_linux_unistd_h(glibc_fp, "libc/kernel/arch-x86/asm/unistd_32.h")
+        glibc_fp.write("#endif\n")
+
+        glibc_fp.write("#endif /* _BIONIC_GLIBC_SYSCALLS_H_ */\n")
+        glibc_fp.close()
+        self.other_files.append(glibc_syscalls_h_path)
+
         linux_syscalls_h_path = "include/sys/linux-syscalls.h"
         D("generating " + linux_syscalls_h_path)
         fp = create_file(linux_syscalls_h_path)
@@ -335,50 +357,40 @@
             sc_id  = sc["common"]
             sc_name = sc["name"]
             if sc_id >= 0:
-                self.gen_NR_syscall(glibc_fp, fp, sc_name, sc_id)
+                self.gen_NR_syscall(fp, sc_name, sc_id)
 
         # now, all arm-specific syscalls
         fp.write("\n#ifdef __arm__\n")
-        glibc_fp.write( "\n#ifdef __arm__\n")
         for sc in self.syscalls:
             sc_id  = sc["armid"]
             sc_name = sc["name"]
             if sc_id >= 0:
-                self.gen_NR_syscall(glibc_fp, fp, sc_name, sc_id)
+                self.gen_NR_syscall(fp, sc_name, sc_id)
         fp.write("#endif\n")
-        glibc_fp.write("#endif\n")
 
         gen_syscalls = {}
         # all i386-specific syscalls
         fp.write("\n#ifdef __i386__\n")
-        glibc_fp.write("\n#ifdef __i386__\n")
         for sc in sorted(self.syscalls,key=lambda x:x["x86id"]):
             sc_id  = sc["x86id"]
             sc_name = sc["name"]
             if sc_id >= 0 and sc_name not in gen_syscalls:
-                self.gen_NR_syscall(glibc_fp, fp, sc_name, sc_id)
+                self.gen_NR_syscall(fp, sc_name, sc_id)
                 gen_syscalls[sc_name] = True
         fp.write("#endif\n")
-        glibc_fp.write("#endif\n")
 
         # all mips-specific syscalls
         fp.write("\n#ifdef __mips__\n")
-        glibc_fp.write("\n#ifdef __mips__\n")
         for sc in sorted(self.syscalls,key=lambda x:x["mipsid"]):
             sc_id = sc["mipsid"]
             if sc_id >= 0:
-                self.gen_NR_syscall(glibc_fp, fp, sc["name"], sc_id)
+                self.gen_NR_syscall(fp, sc["name"], sc_id)
         fp.write( "#endif\n" );
-        glibc_fp.write( "#endif\n" );
 
         fp.write( "\n#endif\n" )
         fp.write( "\n#endif /* _BIONIC_LINUX_SYSCALLS_H_ */\n" );
         fp.close()
 
-        glibc_fp.write("#endif\n")
-        glibc_fp.close()
-
-        self.other_files.append(glibc_syscalls_h_path)
         self.other_files.append(linux_syscalls_h_path)
 
 
