pkg/sort compiling and some progress on syscall. mostly
re-enabling and massaging code.

R=rsc
APPROVED=rsc
DELTA=2496  (1880 added, 330 deleted, 286 changed)
OCL=33487
CL=33504
diff --git a/src/pkg/syscall/syscall_linux_arm.go b/src/pkg/syscall/syscall_linux_arm.go
new file mode 100644
index 0000000..dc64ae7
--- /dev/null
+++ b/src/pkg/syscall/syscall_linux_arm.go
@@ -0,0 +1,138 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package syscall
+
+import "unsafe"
+
+func Getpagesize() int {
+	return 4096
+}
+
+func TimespecToNsec(ts Timespec) int64 {
+	return int64(ts.Sec)*1e9 + int64(ts.Nsec);
+}
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+	ts.Sec = int32(nsec / 1e9);
+	ts.Nsec = int32(nsec % 1e9);
+	return;
+}
+
+func TimevalToNsec(tv Timeval) int64 {
+	return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3;
+}
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+	nsec += 999;	// round up to microsecond
+	tv.Sec = int32(nsec/1e9);
+	tv.Usec = int32(nsec%1e9 / 1e3);
+	return;
+}
+
+// 64-bit file system and 32-bit uid calls
+// (386 default is 32-bit file system and 16-bit uid).
+//sys	Chown(path string, uid int, gid int) (errno int) = SYS_CHOWN32
+//sys	Fchown(fd int, uid int, gid int) (errno int) = SYS_FCHOWN32
+//sys	Fstat(fd int, stat *Stat_t) (errno int) = SYS_FSTAT64
+//sys	Fstatfs(fd int, buf *Statfs_t) (errno int) = SYS_FSTATFS64
+//sys	Getegid() (egid int) = SYS_GETEGID32
+//sys	Geteuid() (euid int) = SYS_GETEUID32
+//sys	Getgid() (gid int) = SYS_GETGID32
+//sys	Getuid() (uid int) = SYS_GETUID32
+//sys	Lchown(path string, uid int, gid int) (errno int) = SYS_LCHOWN32
+//sys	Lstat(path string, stat *Stat_t) (errno int) = SYS_LSTAT64
+//sys	Setfsgid(gid int) (errno int) = SYS_SETFSGID32
+//sys	Setfsuid(uid int) (errno int) = SYS_SETFSUID32
+//sys	Setgid(gid int) (errno int) = SYS_SETGID32
+//sys	Setregid(rgid int, egid int) (errno int) = SYS_SETREGID32
+//sys	Setresgid(rgid int, egid int, sgid int) (errno int) = SYS_SETRESGID32
+//sys	Setresuid(ruid int, euid int, suid int) (errno int) = SYS_SETRESUID32
+//sys	Setreuid(ruid int, euid int) (errno int) = SYS_SETREUID32
+//sys	Stat(path string, stat *Stat_t) (errno int) = SYS_STAT64
+//sys	Statfs(path string, buf *Statfs_t) (errno int) = SYS_STATFS64
+//sys	getgroups(n int, list *_Gid_t) (nn int, errno int) = SYS_GETGROUPS32
+//sys	setgroups(n int, list *_Gid_t) (errno int) = SYS_SETGROUPS32
+
+//sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int) = SYS__NEWSELECT
+
+// Underlying system call writes to newoffset via pointer.
+// Implemented in assembly to avoid allocation.
+func Seek(fd int, offset int64, whence int) (newoffset int64, errno int)
+
+// On x86 Linux, all the socket calls go through an extra indirection,
+// I think because the 5-register system call interface can't handle
+// the 6-argument calls like sendto and recvfrom.  Instead the
+// arguments to the underlying system call are the number below
+// and a pointer to an array of uintptr.  We hide the pointer in the
+// socketcall assembly to avoid allocation on every system call.
+
+const (
+	// see linux/net.h
+	_SOCKET = 1;
+	_BIND = 2;
+	_CONNECT = 3;
+	_LISTEN = 4;
+	_ACCEPT = 5;
+	_GETSOCKNAME = 6;
+	_GETPEERNAME = 7;
+	_SOCKETPAIR = 8;
+	_SEND = 9;
+	_RECV = 10;
+	_SENDTO = 11;
+	_RECVFROM = 12;
+	_SHUTDOWN = 13;
+	_SETSOCKOPT = 14;
+	_GETSOCKOPT = 15;
+	_SENDMSG = 16;
+	_RECVMSG = 17;
+)
+
+func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, errno int)
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) {
+	fd, errno = socketcall(_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0);
+	return;
+}
+
+func getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (errno int) {
+	var _ int;
+	_, errno = socketcall(_GETSOCKNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0);
+	return;
+}
+
+func getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (errno int) {
+	var _ int;
+	_, errno = socketcall(_GETPEERNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0);
+	return;
+}
+
+func bind(s int, addr uintptr, addrlen _Socklen) (errno int) {
+	var _ int;
+	_, errno = socketcall(_BIND, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0);
+	return;
+}
+
+func connect(s int, addr uintptr, addrlen _Socklen) (errno int) {
+	var _ int;
+	_, errno = socketcall(_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0);
+	return;
+}
+
+func socket(domain int, typ int, proto int) (fd int, errno int) {
+	fd, errno = socketcall(_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0);
+	return;
+}
+
+func setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) {
+	var _ int;
+	_, errno = socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0);
+	return;
+}
+
+func Listen(s int, n int) (errno int) {
+	var _ int;
+	_, errno = socketcall(_LISTEN, uintptr(s), uintptr(n), 0, 0, 0, 0);
+	return;
+}
diff --git a/src/pkg/syscall/zerrors_linux_arm.go b/src/pkg/syscall/zerrors_linux_arm.go
new file mode 100644
index 0000000..95d51e9
--- /dev/null
+++ b/src/pkg/syscall/zerrors_linux_arm.go
@@ -0,0 +1,316 @@
+// mkerrors.sh
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// godefs -gsyscall _errors.c
+
+// MACHINE GENERATED - DO NOT EDIT.
+
+package syscall
+
+// Constants
+const (
+	EMULTIHOP = 0x48;
+	EUNATCH = 0x31;
+	EAFNOSUPPORT = 0x61;
+	EREMCHG = 0x4e;
+	EACCES = 0xd;
+	EL3RST = 0x2f;
+	EDESTADDRREQ = 0x59;
+	EILSEQ = 0x54;
+	ESPIPE = 0x1d;
+	EMLINK = 0x1f;
+	EOWNERDEAD = 0x82;
+	ENOTTY = 0x19;
+	EBADE = 0x34;
+	EBADF = 0x9;
+	EBADR = 0x35;
+	EADV = 0x44;
+	ERANGE = 0x22;
+	ECANCELED = 0x7d;
+	ETXTBSY = 0x1a;
+	ENOMEM = 0xc;
+	EINPROGRESS = 0x73;
+	ENOTBLK = 0xf;
+	EPROTOTYPE = 0x5b;
+	ERESTART = 0x55;
+	EISNAM = 0x78;
+	ENOMSG = 0x2a;
+	EALREADY = 0x72;
+	ETIMEDOUT = 0x6e;
+	ENODATA = 0x3d;
+	EINTR = 0x4;
+	ENOLINK = 0x43;
+	EPERM = 0x1;
+	ELOOP = 0x28;
+	ENETDOWN = 0x64;
+	ESTALE = 0x74;
+	ENOTSOCK = 0x58;
+	ENOSR = 0x3f;
+	ECHILD = 0xa;
+	ELNRNG = 0x30;
+	EPIPE = 0x20;
+	EBADMSG = 0x4a;
+	EBFONT = 0x3b;
+	EREMOTE = 0x42;
+	ETOOMANYREFS = 0x6d;
+	EPFNOSUPPORT = 0x60;
+	ENONET = 0x40;
+	EXFULL = 0x36;
+	EBADSLT = 0x39;
+	ENOTNAM = 0x76;
+	ELIBEXEC = 0x53;
+	ENOCSI = 0x32;
+	ENOTEMPTY = 0x27;
+	EADDRINUSE = 0x62;
+	ENETRESET = 0x66;
+	EISDIR = 0x15;
+	EIDRM = 0x2b;
+	ECOMM = 0x46;
+	EBADFD = 0x4d;
+	EL2HLT = 0x33;
+	ENOKEY = 0x7e;
+	EINVAL = 0x16;
+	ESHUTDOWN = 0x6c;
+	EKEYREJECTED = 0x81;
+	ELIBSCN = 0x51;
+	ENAVAIL = 0x77;
+	ENOSTR = 0x3c;
+	EOVERFLOW = 0x4b;
+	EUCLEAN = 0x75;
+	ENOMEDIUM = 0x7b;
+	EBUSY = 0x10;
+	EPROTO = 0x47;
+	ENODEV = 0x13;
+	EKEYEXPIRED = 0x7f;
+	EROFS = 0x1e;
+	ELIBACC = 0x4f;
+	E2BIG = 0x7;
+	EDEADLK = 0x23;
+	ECONNRESET = 0x68;
+	ENXIO = 0x6;
+	EBADRQC = 0x38;
+	ENAMETOOLONG = 0x24;
+	ESOCKTNOSUPPORT = 0x5e;
+	EDOTDOT = 0x49;
+	EADDRNOTAVAIL = 0x63;
+	ETIME = 0x3e;
+	EPROTONOSUPPORT = 0x5d;
+	ENOTRECOVERABLE = 0x83;
+	EIO = 0x5;
+	ENETUNREACH = 0x65;
+	EXDEV = 0x12;
+	EDQUOT = 0x7a;
+	EREMOTEIO = 0x79;
+	ENOSPC = 0x1c;
+	ENOEXEC = 0x8;
+	EMSGSIZE = 0x5a;
+	EDOM = 0x21;
+	EFBIG = 0x1b;
+	ESRCH = 0x3;
+	ECHRNG = 0x2c;
+	EHOSTDOWN = 0x70;
+	ENOLCK = 0x25;
+	ENFILE = 0x17;
+	ENOSYS = 0x26;
+	ENOTCONN = 0x6b;
+	ENOTSUP = 0x5f;
+	ESRMNT = 0x45;
+	EDEADLOCK = 0x23;
+	ECONNABORTED = 0x67;
+	ENOANO = 0x37;
+	EISCONN = 0x6a;
+	EUSERS = 0x57;
+	ENOPROTOOPT = 0x5c;
+	EMFILE = 0x18;
+	ENOBUFS = 0x69;
+	EL3HLT = 0x2e;
+	EFAULT = 0xe;
+	EWOULDBLOCK = 0xb;
+	ELIBBAD = 0x50;
+	ESTRPIPE = 0x56;
+	ECONNREFUSED = 0x6f;
+	EAGAIN = 0xb;
+	ELIBMAX = 0x52;
+	EEXIST = 0x11;
+	EL2NSYNC = 0x2d;
+	ENOENT = 0x2;
+	ENOPKG = 0x41;
+	EKEYREVOKED = 0x80;
+	EHOSTUNREACH = 0x71;
+	ENOTUNIQ = 0x4c;
+	EOPNOTSUPP = 0x5f;
+	ENOTDIR = 0x14;
+	EMEDIUMTYPE = 0x7c;
+	SIGBUS = 0x7;
+	SIGTTIN = 0x15;
+	SIGPROF = 0x1b;
+	SIGFPE = 0x8;
+	SIGHUP = 0x1;
+	SIGTTOU = 0x16;
+	SIGSTKFLT = 0x10;
+	SIGUSR1 = 0xa;
+	SIGURG = 0x17;
+	SIGQUIT = 0x3;
+	SIGCLD = 0x11;
+	SIGIO = 0x1d;
+	SIGABRT = 0x6;
+	SIGUSR2 = 0xc;
+	SIGTRAP = 0x5;
+	SIGVTALRM = 0x1a;
+	SIGPOLL = 0x1d;
+	SIGSEGV = 0xb;
+	SIGCONT = 0x12;
+	SIGPIPE = 0xd;
+	SIGWINCH = 0x1c;
+	SIGXFSZ = 0x19;
+	SIGCHLD = 0x11;
+	SIGSYS = 0x1f;
+	SIGSTOP = 0x13;
+	SIGALRM = 0xe;
+	SIGTSTP = 0x14;
+	SIGKILL = 0x9;
+	SIGXCPU = 0x18;
+	SIGUNUSED = 0x1f;
+	SIGPWR = 0x1e;
+	SIGILL = 0x4;
+	SIGINT = 0x2;
+	SIGIOT = 0x6;
+	SIGTERM = 0xf;
+)
+
+// Types
+
+
+// Error table
+var errors = [...]string {
+	72: "multihop attempted",
+	49: "protocol driver not attached",
+	97: "address family not supported by protocol",
+	78: "remote address changed",
+	13: "permission denied",
+	47: "level 3 reset",
+	89: "destination address required",
+	84: "invalid or incomplete multibyte or wide character",
+	29: "illegal seek",
+	31: "too many links",
+	130: "owner died",
+	25: "inappropriate ioctl for device",
+	52: "invalid exchange",
+	9: "bad file descriptor",
+	53: "invalid request descriptor",
+	68: "advertise error",
+	34: "numerical result out of range",
+	125: "operation canceled",
+	26: "text file busy",
+	12: "cannot allocate memory",
+	115: "operation now in progress",
+	15: "block device required",
+	91: "protocol wrong type for socket",
+	85: "interrupted system call should be restarted",
+	120: "is a named type file",
+	42: "no message of desired type",
+	114: "operation already in progress",
+	110: "connection timed out",
+	61: "no data available",
+	4: "interrupted system call",
+	67: "link has been severed",
+	1: "operation not permitted",
+	40: "too many levels of symbolic links",
+	100: "network is down",
+	116: "stale NFS file handle",
+	88: "socket operation on non-socket",
+	63: "out of streams resources",
+	10: "no child processes",
+	48: "link number out of range",
+	32: "broken pipe",
+	74: "bad message",
+	59: "bad font file format",
+	66: "object is remote",
+	109: "too many references: cannot splice",
+	96: "protocol family not supported",
+	64: "machine is not on the network",
+	54: "exchange full",
+	57: "invalid slot",
+	118: "not a XENIX named type file",
+	83: "cannot exec a shared library directly",
+	50: "no CSI structure available",
+	39: "directory not empty",
+	98: "address already in use",
+	102: "network dropped connection on reset",
+	21: "is a directory",
+	43: "identifier removed",
+	70: "communication error on send",
+	77: "file descriptor in bad state",
+	51: "level 2 halted",
+	126: "required key not available",
+	22: "invalid argument",
+	108: "cannot send after transport endpoint shutdown",
+	129: "key was rejected by service",
+	81: ".lib section in a.out corrupted",
+	119: "no XENIX semaphores available",
+	60: "device not a stream",
+	75: "value too large for defined data type",
+	117: "structure needs cleaning",
+	123: "no medium found",
+	16: "device or resource busy",
+	71: "protocol error",
+	19: "no such device",
+	127: "key has expired",
+	30: "read-only file system",
+	79: "can not access a needed shared library",
+	7: "argument list too long",
+	35: "resource deadlock avoided",
+	104: "connection reset by peer",
+	6: "no such device or address",
+	56: "invalid request code",
+	36: "file name too long",
+	94: "socket type not supported",
+	73: "RFS specific error",
+	99: "cannot assign requested address",
+	62: "timer expired",
+	93: "protocol not supported",
+	131: "state not recoverable",
+	5: "input/output error",
+	101: "network is unreachable",
+	18: "invalid cross-device link",
+	122: "disk quota exceeded",
+	121: "remote I/O error",
+	28: "no space left on device",
+	8: "exec format error",
+	90: "message too long",
+	33: "numerical argument out of domain",
+	27: "file too large",
+	3: "no such process",
+	44: "channel number out of range",
+	112: "host is down",
+	37: "no locks available",
+	23: "too many open files in system",
+	38: "function not implemented",
+	107: "transport endpoint is not connected",
+	95: "operation not supported",
+	69: "srmount error",
+	103: "software caused connection abort",
+	55: "no anode",
+	106: "transport endpoint is already connected",
+	87: "too many users",
+	92: "protocol not available",
+	24: "too many open files",
+	105: "no buffer space available",
+	46: "level 3 halted",
+	14: "bad address",
+	11: "resource temporarily unavailable",
+	80: "accessing a corrupted shared library",
+	86: "streams pipe error",
+	111: "connection refused",
+	82: "attempting to link in too many shared libraries",
+	17: "file exists",
+	45: "level 2 not synchronized",
+	2: "no such file or directory",
+	65: "package not installed",
+	128: "key has been revoked",
+	113: "no route to host",
+	76: "name not unique on network",
+	20: "not a directory",
+	124: "wrong medium type",
+}
+
diff --git a/src/pkg/syscall/zsyscall_linux_arm.go b/src/pkg/syscall/zsyscall_linux_arm.go
new file mode 100644
index 0000000..8a37b13
--- /dev/null
+++ b/src/pkg/syscall/zsyscall_linux_arm.go
@@ -0,0 +1,714 @@
+// mksyscall.sh -l32 syscall_linux.go syscall_linux_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+package syscall
+
+import "unsafe"
+
+func pipe(p *[2]_C_int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func utimes(path string, times *[2]Timeval) (errno int) {
+	r0, r1, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(times)), 0);
+	errno = int(e1);
+	return;
+}
+
+func futimesat(dirfd int, path string, times *[2]Timeval) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(times)));
+	errno = int(e1);
+	return;
+}
+
+func Getcwd(buf []byte) (n int, errno int) {
+	var _p0 *byte;
+	if len(buf) > 0 { _p0 = &buf[0]; }
+	r0, r1, e1 := Syscall(SYS_GETCWD, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0);
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, errno int) {
+	r0, r1, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0);
+	wpid = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Access(path string, mode int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+	errno = int(e1);
+	return;
+}
+
+func Acct(path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Adjtimex(buf *Timex) (state int, errno int) {
+	r0, r1, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0);
+	state = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Chdir(path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Chmod(path string, mode int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+	errno = int(e1);
+	return;
+}
+
+func Chroot(path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Close(fd int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Creat(path string, mode int) (fd int, errno int) {
+	r0, r1, e1 := Syscall(SYS_CREAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Dup(oldfd int) (fd int, errno int) {
+	r0, r1, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0);
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Dup2(oldfd int, newfd int) (fd int, errno int) {
+	r0, r1, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0);
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func EpollCreate(size int) (fd int, errno int) {
+	r0, r1, e1 := Syscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0);
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, errno int) {
+	var _p0 *EpollEvent;
+	if len(events) > 0 { _p0 = &events[0]; }
+	r0, r1, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(unsafe.Pointer(_p0)), uintptr(len(events)), uintptr(msec), 0, 0);
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Exit(code int) () {
+	r0, r1, e1 := Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0);
+	return;
+}
+
+func Faccessat(dirfd int, path string, mode int, flags int) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(flags), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Fallocate(fd int, mode int, off int64, len int64) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off >> 32), uintptr(len), uintptr(len >> 32));
+	errno = int(e1);
+	return;
+}
+
+func Fchdir(fd int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Fchmod(fd int, mode int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0);
+	errno = int(e1);
+	return;
+}
+
+func Fchmodat(dirfd int, path string, mode int, flags int) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(flags), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid), uintptr(flags), 0);
+	errno = int(e1);
+	return;
+}
+
+func fcntl(fd int, cmd int, arg int) (val int, errno int) {
+	r0, r1, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg));
+	val = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Fdatasync(fd int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Fsync(fd int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Ftruncate(fd int, length int64) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length >> 32));
+	errno = int(e1);
+	return;
+}
+
+func Getdents(fd int, buf []byte) (n int, errno int) {
+	var _p0 *byte;
+	if len(buf) > 0 { _p0 = &buf[0]; }
+	r0, r1, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Getpgid(pid int) (pgid int, errno int) {
+	r0, r1, e1 := Syscall(SYS_GETPGID, uintptr(pid), 0, 0);
+	pgid = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Getpgrp() (pid int) {
+	r0, r1, e1 := Syscall(SYS_GETPGRP, 0, 0, 0);
+	pid = int(r0);
+	return;
+}
+
+func Getpid() (pid int) {
+	r0, r1, e1 := Syscall(SYS_GETPID, 0, 0, 0);
+	pid = int(r0);
+	return;
+}
+
+func Getppid() (ppid int) {
+	r0, r1, e1 := Syscall(SYS_GETPPID, 0, 0, 0);
+	ppid = int(r0);
+	return;
+}
+
+func Getrlimit(resource int, rlim *Rlimit) (errno int) {
+	r0, r1, e1 := Syscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Getrusage(who int, rusage *Rusage) (errno int) {
+	r0, r1, e1 := Syscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Gettid() (tid int) {
+	r0, r1, e1 := Syscall(SYS_GETTID, 0, 0, 0);
+	tid = int(r0);
+	return;
+}
+
+func Gettimeofday(tv *Timeval) (errno int) {
+	r0, r1, e1 := Syscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Ioperm(from int, num int, on int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on));
+	errno = int(e1);
+	return;
+}
+
+func Iopl(level int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Kill(pid int, sig int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(sig), 0);
+	errno = int(e1);
+	return;
+}
+
+func Klogctl(typ int, buf []byte) (n int, errno int) {
+	var _p0 *byte;
+	if len(buf) > 0 { _p0 = &buf[0]; }
+	r0, r1, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Link(oldpath string, newpath string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
+	errno = int(e1);
+	return;
+}
+
+func Mkdir(path string, mode int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+	errno = int(e1);
+	return;
+}
+
+func Mkdirat(dirfd int, path string, mode int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode));
+	errno = int(e1);
+	return;
+}
+
+func Mknod(path string, mode int, dev int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(dev));
+	errno = int(e1);
+	return;
+}
+
+func Mknodat(dirfd int, path string, mode int, dev int) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(dev), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Nanosleep(time *Timespec, leftover *Timespec) (errno int) {
+	r0, r1, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Open(path string, mode int, perm int) (fd int, errno int) {
+	r0, r1, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(perm));
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Openat(dirfd int, path string, flags int, mode int) (fd int, errno int) {
+	r0, r1, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), uintptr(mode), 0, 0);
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Pause() (errno int) {
+	r0, r1, e1 := Syscall(SYS_PAUSE, 0, 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func PivotRoot(newroot string, putold string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(StringBytePtr(newroot))), uintptr(unsafe.Pointer(StringBytePtr(putold))), 0);
+	errno = int(e1);
+	return;
+}
+
+func Pread(fd int, p []byte, offset int64) (n int, errno int) {
+	var _p0 *byte;
+	if len(p) > 0 { _p0 = &p[0]; }
+	r0, r1, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), uintptr(offset >> 32), 0);
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Pwrite(fd int, p []byte, offset int64) (n int, errno int) {
+	var _p0 *byte;
+	if len(p) > 0 { _p0 = &p[0]; }
+	r0, r1, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), uintptr(offset >> 32), 0);
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Read(fd int, p []byte) (n int, errno int) {
+	var _p0 *byte;
+	if len(p) > 0 { _p0 = &p[0]; }
+	r0, r1, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Readlink(path string, buf []byte) (n int, errno int) {
+	var _p0 *byte;
+	if len(buf) > 0 { _p0 = &buf[0]; }
+	r0, r1, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Rename(oldpath string, newpath string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
+	errno = int(e1);
+	return;
+}
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(newdirfd), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Rmdir(path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Setdomainname(p []byte) (errno int) {
+	var _p0 *byte;
+	if len(p) > 0 { _p0 = &p[0]; }
+	r0, r1, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Sethostname(p []byte) (errno int) {
+	var _p0 *byte;
+	if len(p) > 0 { _p0 = &p[0]; }
+	r0, r1, e1 := Syscall(SYS_SETHOSTNAME, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Setpgid(pid int, pgid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0);
+	errno = int(e1);
+	return;
+}
+
+func Setrlimit(resource int, rlim *Rlimit) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Setsid() (pid int) {
+	r0, r1, e1 := Syscall(SYS_SETSID, 0, 0, 0);
+	pid = int(r0);
+	return;
+}
+
+func Settimeofday(tv *Timeval) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Setuid(uid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETUID, uintptr(uid), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, errno int) {
+	r0, r1, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags));
+	n = int64(int64(r1)<<32 | int64(r0));
+	return;
+}
+
+func Symlink(oldpath string, newpath string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
+	errno = int(e1);
+	return;
+}
+
+func Sync() () {
+	r0, r1, e1 := Syscall(SYS_SYNC, 0, 0, 0);
+	return;
+}
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(off >> 32), uintptr(n), uintptr(n >> 32), uintptr(flags));
+	errno = int(e1);
+	return;
+}
+
+func Sysinfo(info *Sysinfo_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, errno int) {
+	r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0);
+	n = int64(int64(r1)<<32 | int64(r0));
+	return;
+}
+
+func Tgkill(tgid int, tid int, sig int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig));
+	errno = int(e1);
+	return;
+}
+
+func Time(t *Time_t) (tt Time_t, errno int) {
+	r0, r1, e1 := Syscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0);
+	tt = Time_t(r0);
+	errno = int(e1);
+	return;
+}
+
+func Times(tms *Tms) (ticks uintptr, errno int) {
+	r0, r1, e1 := Syscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0);
+	ticks = uintptr(r0);
+	errno = int(e1);
+	return;
+}
+
+func Truncate(path string, length int64) (errno int) {
+	r0, r1, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(length), uintptr(length >> 32));
+	errno = int(e1);
+	return;
+}
+
+func Umask(mask int) (oldmask int) {
+	r0, r1, e1 := Syscall(SYS_UMASK, uintptr(mask), 0, 0);
+	oldmask = int(r0);
+	return;
+}
+
+func Uname(buf *Utsname) (errno int) {
+	r0, r1, e1 := Syscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Unlink(path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Unlinkat(dirfd int, path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), 0);
+	errno = int(e1);
+	return;
+}
+
+func Unshare(flags int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Ustat(dev int, ubuf *Ustat_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Utime(path string, buf *Utimbuf) (errno int) {
+	r0, r1, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(buf)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Write(fd int, p []byte) (n int, errno int) {
+	var _p0 *byte;
+	if len(p) > 0 { _p0 = &p[0]; }
+	r0, r1, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func exitThread(code int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func read(fd int, p *byte, np int) (n int, errno int) {
+	r0, r1, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func write(fd int, p *byte, np int) (n int, errno int) {
+	r0, r1, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Chown(path string, uid int, gid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CHOWN32, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
+	errno = int(e1);
+	return;
+}
+
+func Fchown(fd int, uid int, gid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid));
+	errno = int(e1);
+	return;
+}
+
+func Fstat(fd int, stat *Stat_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Fstatfs(fd int, buf *Statfs_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Getegid() (egid int) {
+	r0, r1, e1 := Syscall(SYS_GETEGID32, 0, 0, 0);
+	egid = int(r0);
+	return;
+}
+
+func Geteuid() (euid int) {
+	r0, r1, e1 := Syscall(SYS_GETEUID32, 0, 0, 0);
+	euid = int(r0);
+	return;
+}
+
+func Getgid() (gid int) {
+	r0, r1, e1 := Syscall(SYS_GETGID32, 0, 0, 0);
+	gid = int(r0);
+	return;
+}
+
+func Getuid() (uid int) {
+	r0, r1, e1 := Syscall(SYS_GETUID32, 0, 0, 0);
+	uid = int(r0);
+	return;
+}
+
+func Lchown(path string, uid int, gid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
+	errno = int(e1);
+	return;
+}
+
+func Lstat(path string, stat *Stat_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Setfsgid(gid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Setfsuid(uid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Setgid(gid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETGID32, uintptr(gid), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Setregid(rgid int, egid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETREGID32, uintptr(rgid), uintptr(egid), 0);
+	errno = int(e1);
+	return;
+}
+
+func Setresgid(rgid int, egid int, sgid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETRESGID32, uintptr(rgid), uintptr(egid), uintptr(sgid));
+	errno = int(e1);
+	return;
+}
+
+func Setresuid(ruid int, euid int, suid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETRESUID32, uintptr(ruid), uintptr(euid), uintptr(suid));
+	errno = int(e1);
+	return;
+}
+
+func Setreuid(ruid int, euid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETREUID32, uintptr(ruid), uintptr(euid), 0);
+	errno = int(e1);
+	return;
+}
+
+func Stat(path string, stat *Stat_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Statfs(path string, buf *Statfs_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(buf)), 0);
+	errno = int(e1);
+	return;
+}
+
+func getgroups(n int, list *_Gid_t) (nn int, errno int) {
+	r0, r1, e1 := Syscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0);
+	nn = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func setgroups(n int, list *_Gid_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int) {
+	r0, r1, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0);
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+
+
diff --git a/src/pkg/syscall/zsysnum_linux_arm.go b/src/pkg/syscall/zsysnum_linux_arm.go
new file mode 100644
index 0000000..4ff1102
--- /dev/null
+++ b/src/pkg/syscall/zsysnum_linux_arm.go
@@ -0,0 +1,319 @@
+// mksysnum_linux.sh /usr/include/asm/unistd_32.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+package syscall
+
+const(
+	SYS_RESTART_SYSCALL = 0;
+	SYS_EXIT = 1;
+	SYS_FORK = 2;
+	SYS_READ = 3;
+	SYS_WRITE = 4;
+	SYS_OPEN = 5;
+	SYS_CLOSE = 6;
+	SYS_WAITPID = 7;
+	SYS_CREAT = 8;
+	SYS_LINK = 9;
+	SYS_UNLINK = 10;
+	SYS_EXECVE = 11;
+	SYS_CHDIR = 12;
+	SYS_TIME = 13;
+	SYS_MKNOD = 14;
+	SYS_CHMOD = 15;
+	SYS_LCHOWN = 16;
+	SYS_BREAK = 17;
+	SYS_OLDSTAT = 18;
+	SYS_LSEEK = 19;
+	SYS_GETPID = 20;
+	SYS_MOUNT = 21;
+	SYS_UMOUNT = 22;
+	SYS_SETUID = 23;
+	SYS_GETUID = 24;
+	SYS_STIME = 25;
+	SYS_PTRACE = 26;
+	SYS_ALARM = 27;
+	SYS_OLDFSTAT = 28;
+	SYS_PAUSE = 29;
+	SYS_UTIME = 30;
+	SYS_STTY = 31;
+	SYS_GTTY = 32;
+	SYS_ACCESS = 33;
+	SYS_NICE = 34;
+	SYS_FTIME = 35;
+	SYS_SYNC = 36;
+	SYS_KILL = 37;
+	SYS_RENAME = 38;
+	SYS_MKDIR = 39;
+	SYS_RMDIR = 40;
+	SYS_DUP = 41;
+	SYS_PIPE = 42;
+	SYS_TIMES = 43;
+	SYS_PROF = 44;
+	SYS_BRK = 45;
+	SYS_SETGID = 46;
+	SYS_GETGID = 47;
+	SYS_SIGNAL = 48;
+	SYS_GETEUID = 49;
+	SYS_GETEGID = 50;
+	SYS_ACCT = 51;
+	SYS_UMOUNT2 = 52;
+	SYS_LOCK = 53;
+	SYS_IOCTL = 54;
+	SYS_FCNTL = 55;
+	SYS_MPX = 56;
+	SYS_SETPGID = 57;
+	SYS_ULIMIT = 58;
+	SYS_OLDOLDUNAME = 59;
+	SYS_UMASK = 60;
+	SYS_CHROOT = 61;
+	SYS_USTAT = 62;
+	SYS_DUP2 = 63;
+	SYS_GETPPID = 64;
+	SYS_GETPGRP = 65;
+	SYS_SETSID = 66;
+	SYS_SIGACTION = 67;
+	SYS_SGETMASK = 68;
+	SYS_SSETMASK = 69;
+	SYS_SETREUID = 70;
+	SYS_SETREGID = 71;
+	SYS_SIGSUSPEND = 72;
+	SYS_SIGPENDING = 73;
+	SYS_SETHOSTNAME = 74;
+	SYS_SETRLIMIT = 75;
+	SYS_GETRLIMIT = 76;
+	SYS_GETRUSAGE = 77;
+	SYS_GETTIMEOFDAY = 78;
+	SYS_SETTIMEOFDAY = 79;
+	SYS_GETGROUPS = 80;
+	SYS_SETGROUPS = 81;
+	SYS_SELECT = 82;
+	SYS_SYMLINK = 83;
+	SYS_OLDLSTAT = 84;
+	SYS_READLINK = 85;
+	SYS_USELIB = 86;
+	SYS_SWAPON = 87;
+	SYS_REBOOT = 88;
+	SYS_READDIR = 89;
+	SYS_MMAP = 90;
+	SYS_MUNMAP = 91;
+	SYS_TRUNCATE = 92;
+	SYS_FTRUNCATE = 93;
+	SYS_FCHMOD = 94;
+	SYS_FCHOWN = 95;
+	SYS_GETPRIORITY = 96;
+	SYS_SETPRIORITY = 97;
+	SYS_PROFIL = 98;
+	SYS_STATFS = 99;
+	SYS_FSTATFS = 100;
+	SYS_IOPERM = 101;
+	SYS_SOCKETCALL = 102;
+	SYS_SYSLOG = 103;
+	SYS_SETITIMER = 104;
+	SYS_GETITIMER = 105;
+	SYS_STAT = 106;
+	SYS_LSTAT = 107;
+	SYS_FSTAT = 108;
+	SYS_OLDUNAME = 109;
+	SYS_IOPL = 110;
+	SYS_VHANGUP = 111;
+	SYS_IDLE = 112;
+	SYS_VM86OLD = 113;
+	SYS_WAIT4 = 114;
+	SYS_SWAPOFF = 115;
+	SYS_SYSINFO = 116;
+	SYS_IPC = 117;
+	SYS_FSYNC = 118;
+	SYS_SIGRETURN = 119;
+	SYS_CLONE = 120;
+	SYS_SETDOMAINNAME = 121;
+	SYS_UNAME = 122;
+	SYS_MODIFY_LDT = 123;
+	SYS_ADJTIMEX = 124;
+	SYS_MPROTECT = 125;
+	SYS_SIGPROCMASK = 126;
+	SYS_CREATE_MODULE = 127;
+	SYS_INIT_MODULE = 128;
+	SYS_DELETE_MODULE = 129;
+	SYS_GET_KERNEL_SYMS = 130;
+	SYS_QUOTACTL = 131;
+	SYS_GETPGID = 132;
+	SYS_FCHDIR = 133;
+	SYS_BDFLUSH = 134;
+	SYS_SYSFS = 135;
+	SYS_PERSONALITY = 136;
+	SYS_AFS_SYSCALL = 137;
+	SYS_SETFSUID = 138;
+	SYS_SETFSGID = 139;
+	SYS__LLSEEK = 140;
+	SYS_GETDENTS = 141;
+	SYS__NEWSELECT = 142;
+	SYS_FLOCK = 143;
+	SYS_MSYNC = 144;
+	SYS_READV = 145;
+	SYS_WRITEV = 146;
+	SYS_GETSID = 147;
+	SYS_FDATASYNC = 148;
+	SYS__SYSCTL = 149;
+	SYS_MLOCK = 150;
+	SYS_MUNLOCK = 151;
+	SYS_MLOCKALL = 152;
+	SYS_MUNLOCKALL = 153;
+	SYS_SCHED_SETPARAM = 154;
+	SYS_SCHED_GETPARAM = 155;
+	SYS_SCHED_SETSCHEDULER = 156;
+	SYS_SCHED_GETSCHEDULER = 157;
+	SYS_SCHED_YIELD = 158;
+	SYS_SCHED_GET_PRIORITY_MAX = 159;
+	SYS_SCHED_GET_PRIORITY_MIN = 160;
+	SYS_SCHED_RR_GET_INTERVAL = 161;
+	SYS_NANOSLEEP = 162;
+	SYS_MREMAP = 163;
+	SYS_SETRESUID = 164;
+	SYS_GETRESUID = 165;
+	SYS_VM86 = 166;
+	SYS_QUERY_MODULE = 167;
+	SYS_POLL = 168;
+	SYS_NFSSERVCTL = 169;
+	SYS_SETRESGID = 170;
+	SYS_GETRESGID = 171;
+	SYS_PRCTL = 172;
+	SYS_RT_SIGRETURN = 173;
+	SYS_RT_SIGACTION = 174;
+	SYS_RT_SIGPROCMASK = 175;
+	SYS_RT_SIGPENDING = 176;
+	SYS_RT_SIGTIMEDWAIT = 177;
+	SYS_RT_SIGQUEUEINFO = 178;
+	SYS_RT_SIGSUSPEND = 179;
+	SYS_PREAD64 = 180;
+	SYS_PWRITE64 = 181;
+	SYS_CHOWN = 182;
+	SYS_GETCWD = 183;
+	SYS_CAPGET = 184;
+	SYS_CAPSET = 185;
+	SYS_SIGALTSTACK = 186;
+	SYS_SENDFILE = 187;
+	SYS_GETPMSG = 188;
+	SYS_PUTPMSG = 189;
+	SYS_VFORK = 190;
+	SYS_UGETRLIMIT = 191;
+	SYS_MMAP2 = 192;
+	SYS_TRUNCATE64 = 193;
+	SYS_FTRUNCATE64 = 194;
+	SYS_STAT64 = 195;
+	SYS_LSTAT64 = 196;
+	SYS_FSTAT64 = 197;
+	SYS_LCHOWN32 = 198;
+	SYS_GETUID32 = 199;
+	SYS_GETGID32 = 200;
+	SYS_GETEUID32 = 201;
+	SYS_GETEGID32 = 202;
+	SYS_SETREUID32 = 203;
+	SYS_SETREGID32 = 204;
+	SYS_GETGROUPS32 = 205;
+	SYS_SETGROUPS32 = 206;
+	SYS_FCHOWN32 = 207;
+	SYS_SETRESUID32 = 208;
+	SYS_GETRESUID32 = 209;
+	SYS_SETRESGID32 = 210;
+	SYS_GETRESGID32 = 211;
+	SYS_CHOWN32 = 212;
+	SYS_SETUID32 = 213;
+	SYS_SETGID32 = 214;
+	SYS_SETFSUID32 = 215;
+	SYS_SETFSGID32 = 216;
+	SYS_PIVOT_ROOT = 217;
+	SYS_MINCORE = 218;
+	SYS_MADVISE = 219;
+	SYS_MADVISE1 = 219;
+	SYS_GETDENTS64 = 220;
+	SYS_FCNTL64 = 221;
+	SYS_GETTID = 224;
+	SYS_READAHEAD = 225;
+	SYS_SETXATTR = 226;
+	SYS_LSETXATTR = 227;
+	SYS_FSETXATTR = 228;
+	SYS_GETXATTR = 229;
+	SYS_LGETXATTR = 230;
+	SYS_FGETXATTR = 231;
+	SYS_LISTXATTR = 232;
+	SYS_LLISTXATTR = 233;
+	SYS_FLISTXATTR = 234;
+	SYS_REMOVEXATTR = 235;
+	SYS_LREMOVEXATTR = 236;
+	SYS_FREMOVEXATTR = 237;
+	SYS_TKILL = 238;
+	SYS_SENDFILE64 = 239;
+	SYS_FUTEX = 240;
+	SYS_SCHED_SETAFFINITY = 241;
+	SYS_SCHED_GETAFFINITY = 242;
+	SYS_SET_THREAD_AREA = 243;
+	SYS_GET_THREAD_AREA = 244;
+	SYS_IO_SETUP = 245;
+	SYS_IO_DESTROY = 246;
+	SYS_IO_GETEVENTS = 247;
+	SYS_IO_SUBMIT = 248;
+	SYS_IO_CANCEL = 249;
+	SYS_FADVISE64 = 250;
+	SYS_EXIT_GROUP = 252;
+	SYS_LOOKUP_DCOOKIE = 253;
+	SYS_EPOLL_CREATE = 254;
+	SYS_EPOLL_CTL = 255;
+	SYS_EPOLL_WAIT = 256;
+	SYS_REMAP_FILE_PAGES = 257;
+	SYS_SET_TID_ADDRESS = 258;
+	SYS_TIMER_CREATE = 259;
+	SYS_STATFS64 = 268;
+	SYS_FSTATFS64 = 269;
+	SYS_TGKILL = 270;
+	SYS_UTIMES = 271;
+	SYS_FADVISE64_64 = 272;
+	SYS_VSERVER = 273;
+	SYS_MBIND = 274;
+	SYS_GET_MEMPOLICY = 275;
+	SYS_SET_MEMPOLICY = 276;
+	SYS_MQ_OPEN = 277;
+	SYS_KEXEC_LOAD = 283;
+	SYS_WAITID = 284;
+	SYS_ADD_KEY = 286;
+	SYS_REQUEST_KEY = 287;
+	SYS_KEYCTL = 288;
+	SYS_IOPRIO_SET = 289;
+	SYS_IOPRIO_GET = 290;
+	SYS_INOTIFY_INIT = 291;
+	SYS_INOTIFY_ADD_WATCH = 292;
+	SYS_INOTIFY_RM_WATCH = 293;
+	SYS_MIGRATE_PAGES = 294;
+	SYS_OPENAT = 295;
+	SYS_MKDIRAT = 296;
+	SYS_MKNODAT = 297;
+	SYS_FCHOWNAT = 298;
+	SYS_FUTIMESAT = 299;
+	SYS_FSTATAT64 = 300;
+	SYS_UNLINKAT = 301;
+	SYS_RENAMEAT = 302;
+	SYS_LINKAT = 303;
+	SYS_SYMLINKAT = 304;
+	SYS_READLINKAT = 305;
+	SYS_FCHMODAT = 306;
+	SYS_FACCESSAT = 307;
+	SYS_PSELECT6 = 308;
+	SYS_PPOLL = 309;
+	SYS_UNSHARE = 310;
+	SYS_SET_ROBUST_LIST = 311;
+	SYS_GET_ROBUST_LIST = 312;
+	SYS_SPLICE = 313;
+	SYS_SYNC_FILE_RANGE = 314;
+	SYS_TEE = 315;
+	SYS_VMSPLICE = 316;
+	SYS_MOVE_PAGES = 317;
+	SYS_GETCPU = 318;
+	SYS_EPOLL_PWAIT = 319;
+	SYS_UTIMENSAT = 320;
+	SYS_SIGNALFD = 321;
+	SYS_TIMERFD = 322;
+	SYS_EVENTFD = 323;
+	SYS_FALLOCATE = 324;
+)
+
+func _darwin_system_call_conflict() {
+}
diff --git a/src/pkg/syscall/ztypes_linux_arm.go b/src/pkg/syscall/ztypes_linux_arm.go
new file mode 100644
index 0000000..a3b1e6b
--- /dev/null
+++ b/src/pkg/syscall/ztypes_linux_arm.go
@@ -0,0 +1,368 @@
+// godefs -gsyscall -f-m32 types_linux.c types_linux_386.c
+
+// MACHINE GENERATED - DO NOT EDIT.
+
+package syscall
+
+// Constants
+const (
+	sizeofPtr = 0x4;
+	sizeofShort = 0x2;
+	sizeofInt = 0x4;
+	sizeofLong = 0x4;
+	sizeofLongLong = 0x8;
+	PathMax = 0x1000;
+	O_RDONLY = 0;
+	O_WRONLY = 0x1;
+	O_RDWR = 0x2;
+	O_APPEND = 0x400;
+	O_ASYNC = 0x2000;
+	O_CREAT = 0x40;
+	O_NOCTTY = 0x100;
+	O_NONBLOCK = 0x800;
+	O_SYNC = 0x1000;
+	O_TRUNC = 0x200;
+	O_CLOEXEC = 0;
+	F_GETFD = 0x1;
+	F_SETFD = 0x2;
+	F_GETFL = 0x3;
+	F_SETFL = 0x4;
+	FD_CLOEXEC = 0x1;
+	NAME_MAX = 0xff;
+	S_IFMT = 0xf000;
+	S_IFIFO = 0x1000;
+	S_IFCHR = 0x2000;
+	S_IFDIR = 0x4000;
+	S_IFBLK = 0x6000;
+	S_IFREG = 0x8000;
+	S_IFLNK = 0xa000;
+	S_IFSOCK = 0xc000;
+	S_ISUID = 0x800;
+	S_ISGID = 0x400;
+	S_ISVTX = 0x200;
+	S_IRUSR = 0x100;
+	S_IWUSR = 0x80;
+	S_IXUSR = 0x40;
+	WNOHANG = 0x1;
+	WUNTRACED = 0x2;
+	WEXITED = 0x4;
+	WSTOPPED = 0x2;
+	WCONTINUED = 0x8;
+	WNOWAIT = 0x1000000;
+	WCLONE = 0x80000000;
+	WALL = 0x40000000;
+	WNOTHREAD = 0x20000000;
+	AF_UNIX = 0x1;
+	AF_INET = 0x2;
+	AF_INET6 = 0xa;
+	SOCK_STREAM = 0x1;
+	SOCK_DGRAM = 0x2;
+	SOCK_RAW = 0x3;
+	SOCK_SEQPACKET = 0x5;
+	SOL_SOCKET = 0x1;
+	SO_REUSEADDR = 0x2;
+	SO_KEEPALIVE = 0x9;
+	SO_DONTROUTE = 0x5;
+	SO_BROADCAST = 0x6;
+	SO_LINGER = 0xd;
+	SO_SNDBUF = 0x7;
+	SO_RCVBUF = 0x8;
+	SO_SNDTIMEO = 0x15;
+	SO_RCVTIMEO = 0x14;
+	IPPROTO_TCP = 0x6;
+	IPPROTO_UDP = 0x11;
+	TCP_NODELAY = 0x1;
+	SOMAXCONN = 0x80;
+	SizeofSockaddrInet4 = 0x10;
+	SizeofSockaddrInet6 = 0x1c;
+	SizeofSockaddrAny = 0x1c;
+	SizeofSockaddrUnix = 0x6e;
+	_PTRACE_TRACEME = 0;
+	_PTRACE_PEEKTEXT = 0x1;
+	_PTRACE_PEEKDATA = 0x2;
+	_PTRACE_PEEKUSER = 0x3;
+	_PTRACE_POKETEXT = 0x4;
+	_PTRACE_POKEDATA = 0x5;
+	_PTRACE_POKEUSER = 0x6;
+	_PTRACE_CONT = 0x7;
+	_PTRACE_KILL = 0x8;
+	_PTRACE_SINGLESTEP = 0x9;
+	_PTRACE_GETREGS = 0xc;
+	_PTRACE_SETREGS = 0xd;
+	_PTRACE_GETFPREGS = 0xe;
+	_PTRACE_SETFPREGS = 0xf;
+	_PTRACE_ATTACH = 0x10;
+	_PTRACE_DETACH = 0x11;
+	_PTRACE_GETFPXREGS = 0x12;
+	_PTRACE_SETFPXREGS = 0x13;
+	_PTRACE_SYSCALL = 0x18;
+	_PTRACE_SETOPTIONS = 0x4200;
+	_PTRACE_GETEVENTMSG = 0x4201;
+	_PTRACE_GETSIGINFO = 0x4202;
+	_PTRACE_SETSIGINFO = 0x4203;
+	PTRACE_O_TRACESYSGOOD = 0x1;
+	PTRACE_O_TRACEFORK = 0x2;
+	PTRACE_O_TRACEVFORK = 0x4;
+	PTRACE_O_TRACECLONE = 0x8;
+	PTRACE_O_TRACEEXEC = 0x10;
+	PTRACE_O_TRACEVFORKDONE = 0x20;
+	PTRACE_O_TRACEEXIT = 0x40;
+	PTRACE_O_MASK = 0x7f;
+	PTRACE_EVENT_FORK = 0x1;
+	PTRACE_EVENT_VFORK = 0x2;
+	PTRACE_EVENT_CLONE = 0x3;
+	PTRACE_EVENT_EXEC = 0x4;
+	PTRACE_EVENT_VFORK_DONE = 0x5;
+	PTRACE_EVENT_EXIT = 0x6;
+	EPOLLIN = 0x1;
+	EPOLLRDHUP = 0x2000;
+	EPOLLOUT = 0x4;
+	EPOLLONESHOT = 0x40000000;
+	EPOLL_CTL_MOD = 0x3;
+	EPOLL_CTL_ADD = 0x1;
+	EPOLL_CTL_DEL = 0x2;
+)
+
+// Types
+
+type _C_short int16
+
+type _C_int int32
+
+type _C_long int32
+
+type _C_long_long int64
+
+type Timespec struct {
+	Sec int32;
+	Nsec int32;
+}
+
+type Timeval struct {
+	Sec int32;
+	Usec int32;
+}
+
+type Timex struct {
+	Modes uint32;
+	Offset int32;
+	Freq int32;
+	Maxerror int32;
+	Esterror int32;
+	Status int32;
+	Constant int32;
+	Precision int32;
+	Tolerance int32;
+	Time Timeval;
+	Tick int32;
+	Ppsfreq int32;
+	Jitter int32;
+	Shift int32;
+	Stabil int32;
+	Jitcnt int32;
+	Calcnt int32;
+	Errcnt int32;
+	Stbcnt int32;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+}
+
+type Time_t int32
+
+type Tms struct {
+	Utime int32;
+	Stime int32;
+	Cutime int32;
+	Cstime int32;
+}
+
+type Utimbuf struct {
+	Actime int32;
+	Modtime int32;
+}
+
+type Rusage struct {
+	Utime Timeval;
+	Stime Timeval;
+	Maxrss int32;
+	Ixrss int32;
+	Idrss int32;
+	Isrss int32;
+	Minflt int32;
+	Majflt int32;
+	Nswap int32;
+	Inblock int32;
+	Oublock int32;
+	Msgsnd int32;
+	Msgrcv int32;
+	Nsignals int32;
+	Nvcsw int32;
+	Nivcsw int32;
+}
+
+type Rlimit struct {
+	Cur uint64;
+	Max uint64;
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+	Dev uint64;
+	__pad1 uint16;
+	Pad0 [2]byte;
+	__st_ino uint32;
+	Mode uint32;
+	Nlink uint32;
+	Uid uint32;
+	Gid uint32;
+	Rdev uint64;
+	__pad2 uint16;
+	Pad1 [2]byte;
+	Size int64;
+	Blksize int32;
+	Blocks int64;
+	Atim Timespec;
+	Mtim Timespec;
+	Ctim Timespec;
+	Ino uint64;
+}
+
+type Statfs_t struct {
+	Type int32;
+	Bsize int32;
+	Blocks uint64;
+	Bfree uint64;
+	Bavail uint64;
+	Files uint64;
+	Ffree uint64;
+	Fsid [8]byte /* __fsid_t */;
+	Namelen int32;
+	Frsize int32;
+	Spare [5]int32;
+}
+
+type Dirent struct {
+	Ino uint64;
+	Off int64;
+	Reclen uint16;
+	Type uint8;
+	Name [256]int8;
+	Pad0 [1]byte;
+}
+
+type RawSockaddrInet4 struct {
+	Family uint16;
+	Port uint16;
+	Addr [4]byte /* in_addr */;
+	Zero [8]uint8;
+}
+
+type RawSockaddrInet6 struct {
+	Family uint16;
+	Port uint16;
+	Flowinfo uint32;
+	Addr [16]byte /* in6_addr */;
+	Scope_id uint32;
+}
+
+type RawSockaddrUnix struct {
+	Family uint16;
+	Path [108]int8;
+}
+
+type RawSockaddr struct {
+	Family uint16;
+	Data [14]int8;
+}
+
+type RawSockaddrAny struct {
+	Addr RawSockaddr;
+	Pad [12]int8;
+}
+
+type _Socklen uint32
+
+type Linger struct {
+	Onoff int32;
+	Linger int32;
+}
+
+type PtraceRegs struct {
+	Ebx int32;
+	Ecx int32;
+	Edx int32;
+	Esi int32;
+	Edi int32;
+	Ebp int32;
+	Eax int32;
+	Ds uint16;
+	__ds uint16;
+	Es uint16;
+	__es uint16;
+	Fs uint16;
+	__fs uint16;
+	Gs uint16;
+	__gs uint16;
+	Eax int32;
+	Eip int32;
+	Cs uint16;
+	__cs uint16;
+	Eflags int32;
+	Esp int32;
+	Ss uint16;
+	__ss uint16;
+}
+
+type FdSet struct {
+	Bits [32]int32;
+}
+
+type Sysinfo_t struct {
+	Uptime int32;
+	Loads [3]uint32;
+	Totalram uint32;
+	Freeram uint32;
+	Sharedram uint32;
+	Bufferram uint32;
+	Totalswap uint32;
+	Freeswap uint32;
+	Procs uint16;
+	Pad uint16;
+	Totalhigh uint32;
+	Freehigh uint32;
+	Unit uint32;
+	_f [8]int8;
+}
+
+type Utsname struct {
+	Sysname [65]int8;
+	Nodename [65]int8;
+	Release [65]int8;
+	Version [65]int8;
+	Machine [65]int8;
+	Domainname [65]int8;
+}
+
+type Ustat_t struct {
+	Tfree int32;
+	Tinode uint32;
+	Fname [6]int8;
+	Fpack [6]int8;
+}
+
+type EpollEvent struct {
+	Events uint32;
+	Fd int32;
+	Pad int32;
+}