386 system call fixes:
  * use 64-bit file system calls (Linux, Darwin)
  * use 32-bit [sic] uid/gid calls (Linux)
  * fix sockets on Linux

Darwin/386 works again.

Linux/386 is better but must never have worked;
there are still bugs surrounding the creation of new
threads in the runtime package.

R=austin
DELTA=1332  (673 added, 614 deleted, 45 changed)
OCL=30327
CL=30380
diff --git a/src/pkg/syscall/syscall_linux_386.go b/src/pkg/syscall/syscall_linux_386.go
index 9bf3f9c..b41c60a 100644
--- a/src/pkg/syscall/syscall_linux_386.go
+++ b/src/pkg/syscall/syscall_linux_386.go
@@ -34,6 +34,34 @@
 	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
+
+// 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