Clean up the 32-bit kernel support, fix LP64 fcntl declaration.

In practice, thanks to all the registers the stubs don't actually change,
but it's confusing to have an incorrect declaration.

I suspect that fcntl remains broken for aarch64; it happens to work for
x86_64 because the first vararg argument gets placed in the right register
anyway, but I have no reason to believe that's true for aarch64.

This patch adds a unit test, though, so we'll be able to tell when we get
as far as running the unit tests.

Change-Id: I58dd0054fe99d7d51d04c22781d8965dff1afbf3
diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT
index ce79e9c..7c15297 100644
--- a/libc/SYSCALLS.TXT
+++ b/libc/SYSCALLS.TXT
@@ -109,8 +109,8 @@
 int         __ioctl:ioctl(int, int, void*)  all
 int         readv(int, const struct iovec*, int)   all
 int         writev(int, const struct iovec*, int)  all
-int         __fcntl:fcntl(int, int, void*)  arm,mips,x86
-int         fcntl(int, void*)  aarch64,x86_64
+int         __fcntl64:fcntl64(int, int, void*)  arm,mips,x86
+int         fcntl(int, int, void*)  aarch64,x86_64
 int         flock(int, int)   all
 int         fchmod(int, mode_t)  all
 int         dup(int)  all
@@ -122,7 +122,6 @@
 int         fchown:fchown32(int, uid_t, gid_t)  arm,x86
 int         fchown:fchown(int, uid_t, gid_t)    aarch64,mips,x86_64
 void        sync(void)  all
-int         __fcntl64:fcntl64(int, int, void*)  arm,mips,x86
 int         __fstatfs64:fstatfs64(int, size_t, struct statfs*)  arm,mips,x86
 int         fstatfs(int, struct statfs*)  aarch64,x86_64
 int         fsetxattr(int, const char*, const void*, size_t, int) all