1
0
mirror of https://github.com/golang/go synced 2024-11-22 00:44:39 -07:00

- moved 3 functions from syscall_linux to _386 and _amd64 (arm lacks them)

- 64 bit OMINUS
- added bunch of missing arm syscalls

R=rsc
APPROVED=rsc
DELTA=203  (189 added, 3 deleted, 11 changed)
OCL=35412
CL=35414
This commit is contained in:
Kai Backman 2009-10-06 16:39:38 -07:00
parent 13b1d5b1bb
commit 116beb2653
9 changed files with 198 additions and 12 deletions

View File

@ -29,14 +29,31 @@ cgen64(Node *n, Node *res)
default:
fatal("cgen64 %O", n->op);
// case OMINUS:
// cgen(n->left, res);
// split64(res, &lo1, &hi1);
// gins(ANEGL, N, &lo1);
// gins(AADCL, ncon(0), &hi1);
// gins(ANEGL, N, &hi1);
// splitclean();
// return;
case OMINUS:
split64(n->left, &lo1, &hi1);
split64(res, &lo2, &hi2);
regalloc(&t1, lo1.type, N);
regalloc(&al, lo1.type, N);
regalloc(&ah, hi1.type, N);
gins(AMOVW, &lo1, &al);
gins(AMOVW, &hi1, &ah);
gmove(ncon(0), &t1);
gins(ASUB, &t1, &al);
gins(ASBC, &t1, &ah);
gins(AMOVW, &al, &lo2);
gins(AMOVW, &ah, &hi2);
regfree(&t1);
regfree(&al);
regfree(&ah);
splitclean();
splitclean();
return;
// case OCOM:
// cgen(n->left, res);

View File

@ -141,6 +141,7 @@ void afunclit(Addr*);
void datagostring(Strlit*, Addr*);
void split64(Node*, Node*, Node*);
void splitclean(void);
Node* ncon(uint32 i);
/*
* obj.c

View File

@ -21,7 +21,7 @@ chmod +x $GOBIN/quietgcc
# TODO(kaib): converge with normal build
#for i in lib9 libbio libmach libregexp cmd pkg cmd/ebnflint cmd/godoc cmd/gofmt
for i in lib9 libbio libmach libregexp cmd pkg/runtime pkg/sync pkg/once pkg/syscall
for i in lib9 libbio libmach libregexp cmd pkg/runtime pkg/sync pkg/once pkg/syscall pkg/os pkg/unicode pkg/utf8 pkg/bytes pkg/strings pkg/io
#for i in lib9 libbio libmach libregexp cmd pkg/runtime pkg/sync pkg/once pkg/malloc pkg/sort pkg/unicode
# pkg/hash
# pkg/math

View File

@ -573,8 +573,6 @@ func PtraceDetach(pid int) (errno int) {
//sys Getrusage(who int, rusage *Rusage) (errno int)
//sys Gettid() (tid int)
//sys Gettimeofday(tv *Timeval) (errno int)
//sys Ioperm(from int, num int, on int) (errno int)
//sys Iopl(level int) (errno int)
//sys Kill(pid int, sig int) (errno int)
//sys Klogctl(typ int, buf []byte) (n int, errno int) = SYS_SYSLOG
//sys Link(oldpath string, newpath string) (errno int)
@ -604,7 +602,6 @@ func PtraceDetach(pid int) (errno int) {
//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, errno int)
//sys Symlink(oldpath string, newpath string) (errno int)
//sys Sync()
//sys SyncFileRange(fd int, off int64, n int64, flags int) (errno int)
//sys Sysinfo(info *Sysinfo_t) (errno int)
//sys Tee(rfd int, wfd int, len int, flags int) (n int64, errno int)
//sys Tgkill(tgid int, tid int, sig int) (errno int)

View File

@ -41,6 +41,8 @@ func NsecToTimeval(nsec int64) (tv Timeval) {
//sys Geteuid() (euid int) = SYS_GETEUID32
//sys Getgid() (gid int) = SYS_GETGID32
//sys Getuid() (uid int) = SYS_GETUID32
//sys Ioperm(from int, num int, on int) (errno int)
//sys Iopl(level int) (errno int)
//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
@ -52,6 +54,7 @@ func NsecToTimeval(nsec int64) (tv Timeval) {
//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 SyncFileRange(fd int, off int64, n int64, flags int) (errno int)
//sys getgroups(n int, list *_Gid_t) (nn int, errno int) = SYS_GETGROUPS32
//sys setgroups(n int, list *_Gid_t) (errno int) = SYS_SETGROUPS32

View File

@ -12,6 +12,8 @@ package syscall
//sys Geteuid() (euid int)
//sys Getgid() (gid int)
//sys Getuid() (uid int)
//sys Ioperm(from int, num int, on int) (errno int)
//sys Iopl(level int) (errno int)
//sys Lchown(path string, uid int, gid int) (errno int)
//sys Listen(s int, n int) (errno int)
//sys Lstat(path string, stat *Stat_t) (errno int)
@ -27,6 +29,7 @@ package syscall
//sys Shutdown(fd int, how int) (errno int)
//sys Stat(path string, stat *Stat_t) (errno int)
//sys Statfs(path string, buf *Statfs_t) (errno int)
//sys SyncFileRange(fd int, off int64, n int64, flags int) (errno int)
//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int)
//sys bind(s int, addr uintptr, addrlen _Socklen) (errno int)
//sys connect(s int, addr uintptr, addrlen _Socklen) (errno int)

View File

@ -4,6 +4,14 @@
package syscall
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);
@ -27,5 +35,29 @@ func NsecToTimeval(nsec int64) (tv Timeval) {
//sys getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (errno int)
//sys getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (errno int)
//sys Chown(path string, uid int, gid int) (errno int)
//sys Fchown(fd int, uid int, gid int) (errno int)
//sys Fstat(fd int, stat *Stat_t) (errno int)
//sys Fstatfs(fd int, buf *Statfs_t) (errno int)
//sys Getegid() (egid int)
//sys Geteuid() (euid int)
//sys Getgid() (gid int)
//sys Getuid() (uid int)
//sys Lchown(path string, uid int, gid int) (errno int)
//sys Listen(s int, n int) (errno int)
//sys Lstat(path string, stat *Stat_t) (errno int)
//sys Seek(fd int, offset int64, whence int) (off int64, errno int) = SYS_LSEEK
//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int) = SYS__NEWSELECT
//sys Setfsgid(gid int) (errno int)
//sys Setfsuid(uid int) (errno int)
//sys Setgid(gid int) (errno int)
//sys Setregid(rgid int, egid int) (errno int)
//sys Setresgid(rgid int, egid int, sgid int) (errno int)
//sys Setresuid(ruid int, euid int, suid int) (errno int)
//sys Setreuid(ruid int, euid int) (errno int)
//sys Shutdown(fd int, how int) (errno int)
//sys Stat(path string, stat *Stat_t) (errno int)
//sys Statfs(path string, buf *Statfs_t) (errno int)

View File

@ -615,6 +615,78 @@ func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (errno int) {
return;
}
func Chown(path string, uid int, gid int) (errno int) {
_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
errno = int(e1);
return;
}
func Fchown(fd int, uid int, gid int) (errno int) {
_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid));
errno = int(e1);
return;
}
func Fstat(fd int, stat *Stat_t) (errno int) {
_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0);
errno = int(e1);
return;
}
func Fstatfs(fd int, buf *Statfs_t) (errno int) {
_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0);
errno = int(e1);
return;
}
func Getegid() (egid int) {
r0, _, _ := Syscall(SYS_GETEGID, 0, 0, 0);
egid = int(r0);
return;
}
func Geteuid() (euid int) {
r0, _, _ := Syscall(SYS_GETEUID, 0, 0, 0);
euid = int(r0);
return;
}
func Getgid() (gid int) {
r0, _, _ := Syscall(SYS_GETGID, 0, 0, 0);
gid = int(r0);
return;
}
func Getuid() (uid int) {
r0, _, _ := Syscall(SYS_GETUID, 0, 0, 0);
uid = int(r0);
return;
}
func Lchown(path string, uid int, gid int) (errno int) {
_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
errno = int(e1);
return;
}
func Listen(s int, n int) (errno int) {
_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0);
errno = int(e1);
return;
}
func Lstat(path string, stat *Stat_t) (errno int) {
_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
errno = int(e1);
return;
}
func Seek(fd int, offset int64, whence int) (off int64, errno int) {
r0, r1, _ := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset >> 32), uintptr(whence), 0, 0);
off = int64(int64(r1)<<32 | int64(r0));
return;
}
func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int) {
r0, _, 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);
@ -622,5 +694,65 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err
return;
}
func Setfsgid(gid int) (errno int) {
_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0);
errno = int(e1);
return;
}
func Setfsuid(uid int) (errno int) {
_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0);
errno = int(e1);
return;
}
func Setgid(gid int) (errno int) {
_, _, e1 := Syscall(SYS_SETGID, uintptr(gid), 0, 0);
errno = int(e1);
return;
}
func Setregid(rgid int, egid int) (errno int) {
_, _, e1 := Syscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0);
errno = int(e1);
return;
}
func Setresgid(rgid int, egid int, sgid int) (errno int) {
_, _, e1 := Syscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid));
errno = int(e1);
return;
}
func Setresuid(ruid int, euid int, suid int) (errno int) {
_, _, e1 := Syscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid));
errno = int(e1);
return;
}
func Setreuid(ruid int, euid int) (errno int) {
_, _, e1 := Syscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0);
errno = int(e1);
return;
}
func Shutdown(fd int, how int) (errno int) {
_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0);
errno = int(e1);
return;
}
func Stat(path string, stat *Stat_t) (errno int) {
_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
errno = int(e1);
return;
}
func Statfs(path string, buf *Statfs_t) (errno int) {
_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(buf)), 0);
errno = int(e1);
return;
}

View File

@ -202,6 +202,7 @@ gc1.go
hashmap.go
helloworld.go
if.go
import.go
import1.go
indirect.go
indirect1.go