Initial revision
authorceriel <none@none>
Tue, 3 Mar 1987 09:37:26 +0000 (09:37 +0000)
committerceriel <none@none>
Tue, 3 Mar 1987 09:37:26 +0000 (09:37 +0000)
154 files changed:
mach/sun2/libsys/LIST [new file with mode: 0644]
mach/sun2/libsys/Makefile [new file with mode: 0644]
mach/sun2/libsys/_exit.s [new file with mode: 0644]
mach/sun2/libsys/accept.s [new file with mode: 0644]
mach/sun2/libsys/access.s [new file with mode: 0644]
mach/sun2/libsys/acct.s [new file with mode: 0644]
mach/sun2/libsys/adjtime.s [new file with mode: 0644]
mach/sun2/libsys/alarm.c [new file with mode: 0644]
mach/sun2/libsys/async_dem.s [new file with mode: 0644]
mach/sun2/libsys/bind.s [new file with mode: 0644]
mach/sun2/libsys/cerror.s [new file with mode: 0644]
mach/sun2/libsys/chdir.s [new file with mode: 0644]
mach/sun2/libsys/chmod.s [new file with mode: 0644]
mach/sun2/libsys/chown.s [new file with mode: 0644]
mach/sun2/libsys/chroot.s [new file with mode: 0644]
mach/sun2/libsys/cleanup.c [new file with mode: 0644]
mach/sun2/libsys/close.s [new file with mode: 0644]
mach/sun2/libsys/compmodule [new file with mode: 0755]
mach/sun2/libsys/connect.s [new file with mode: 0644]
mach/sun2/libsys/creat.s [new file with mode: 0644]
mach/sun2/libsys/dup.s [new file with mode: 0644]
mach/sun2/libsys/dup2.s [new file with mode: 0644]
mach/sun2/libsys/execl.c [new file with mode: 0644]
mach/sun2/libsys/execle.c [new file with mode: 0644]
mach/sun2/libsys/execv.c [new file with mode: 0644]
mach/sun2/libsys/execve.s [new file with mode: 0644]
mach/sun2/libsys/exit.c [new file with mode: 0644]
mach/sun2/libsys/exportfs.s [new file with mode: 0644]
mach/sun2/libsys/fchmod.s [new file with mode: 0644]
mach/sun2/libsys/fchown.s [new file with mode: 0644]
mach/sun2/libsys/fcntl.s [new file with mode: 0644]
mach/sun2/libsys/flock.s [new file with mode: 0644]
mach/sun2/libsys/fork.s [new file with mode: 0644]
mach/sun2/libsys/fstat.s [new file with mode: 0644]
mach/sun2/libsys/fstatfs.s [new file with mode: 0644]
mach/sun2/libsys/fsync.s [new file with mode: 0644]
mach/sun2/libsys/ftime.c [new file with mode: 0644]
mach/sun2/libsys/ftruncate.s [new file with mode: 0644]
mach/sun2/libsys/getdirent.s [new file with mode: 0644]
mach/sun2/libsys/getdomnam.s [new file with mode: 0644]
mach/sun2/libsys/getdopt.s [new file with mode: 0644]
mach/sun2/libsys/getdtabsz.s [new file with mode: 0644]
mach/sun2/libsys/getegid.s [new file with mode: 0644]
mach/sun2/libsys/geteuid.s [new file with mode: 0644]
mach/sun2/libsys/getfh.s [new file with mode: 0644]
mach/sun2/libsys/getgid.s [new file with mode: 0644]
mach/sun2/libsys/getgroups.s [new file with mode: 0644]
mach/sun2/libsys/gethostid.s [new file with mode: 0644]
mach/sun2/libsys/gethostnam.s [new file with mode: 0644]
mach/sun2/libsys/getitimer.s [new file with mode: 0644]
mach/sun2/libsys/getpagesiz.s [new file with mode: 0644]
mach/sun2/libsys/getpeernam.s [new file with mode: 0644]
mach/sun2/libsys/getpgrp.s [new file with mode: 0644]
mach/sun2/libsys/getpid.s [new file with mode: 0644]
mach/sun2/libsys/getppid.s [new file with mode: 0644]
mach/sun2/libsys/getprio.s [new file with mode: 0644]
mach/sun2/libsys/getrlimit.s [new file with mode: 0644]
mach/sun2/libsys/getrusage.s [new file with mode: 0644]
mach/sun2/libsys/getsocknam.s [new file with mode: 0644]
mach/sun2/libsys/getsockopt.s [new file with mode: 0644]
mach/sun2/libsys/gettimday.s [new file with mode: 0644]
mach/sun2/libsys/getuid.s [new file with mode: 0644]
mach/sun2/libsys/gtty.c [new file with mode: 0644]
mach/sun2/libsys/head_em.s [new file with mode: 0644]
mach/sun2/libsys/ioctl.s [new file with mode: 0644]
mach/sun2/libsys/kill.s [new file with mode: 0644]
mach/sun2/libsys/killpg.s [new file with mode: 0644]
mach/sun2/libsys/link.s [new file with mode: 0644]
mach/sun2/libsys/listen.s [new file with mode: 0644]
mach/sun2/libsys/lockf.c [new file with mode: 0644]
mach/sun2/libsys/lseek.s [new file with mode: 0644]
mach/sun2/libsys/lstat.s [new file with mode: 0644]
mach/sun2/libsys/madvise.s [new file with mode: 0644]
mach/sun2/libsys/mincore.s [new file with mode: 0644]
mach/sun2/libsys/mkdir.s [new file with mode: 0644]
mach/sun2/libsys/mknod.s [new file with mode: 0644]
mach/sun2/libsys/mmap.s [new file with mode: 0644]
mach/sun2/libsys/mount.s [new file with mode: 0644]
mach/sun2/libsys/mprotect.s [new file with mode: 0644]
mach/sun2/libsys/mremap.s [new file with mode: 0644]
mach/sun2/libsys/munmap.s [new file with mode: 0644]
mach/sun2/libsys/nfssvc.s [new file with mode: 0644]
mach/sun2/libsys/nice.c [new file with mode: 0644]
mach/sun2/libsys/open.s [new file with mode: 0644]
mach/sun2/libsys/pause.c [new file with mode: 0644]
mach/sun2/libsys/pipe.s [new file with mode: 0644]
mach/sun2/libsys/profil.s [new file with mode: 0644]
mach/sun2/libsys/ptrace.s [new file with mode: 0644]
mach/sun2/libsys/quotactl.s [new file with mode: 0644]
mach/sun2/libsys/read.s [new file with mode: 0644]
mach/sun2/libsys/readlink.s [new file with mode: 0644]
mach/sun2/libsys/readv.s [new file with mode: 0644]
mach/sun2/libsys/reboot.s [new file with mode: 0644]
mach/sun2/libsys/recv.s [new file with mode: 0644]
mach/sun2/libsys/recvfrom.s [new file with mode: 0644]
mach/sun2/libsys/recvmsg.s [new file with mode: 0644]
mach/sun2/libsys/rename.s [new file with mode: 0644]
mach/sun2/libsys/rmdir.s [new file with mode: 0644]
mach/sun2/libsys/sbrk.s [new file with mode: 0644]
mach/sun2/libsys/select.s [new file with mode: 0644]
mach/sun2/libsys/send.s [new file with mode: 0644]
mach/sun2/libsys/sendmsg.s [new file with mode: 0644]
mach/sun2/libsys/sendto.s [new file with mode: 0644]
mach/sun2/libsys/setdomnam.s [new file with mode: 0644]
mach/sun2/libsys/setdopt.s [new file with mode: 0644]
mach/sun2/libsys/setgid.c [new file with mode: 0644]
mach/sun2/libsys/setgroups.s [new file with mode: 0644]
mach/sun2/libsys/sethostnam.s [new file with mode: 0644]
mach/sun2/libsys/setitimer.s [new file with mode: 0644]
mach/sun2/libsys/setpgrp.s [new file with mode: 0644]
mach/sun2/libsys/setprio.s [new file with mode: 0644]
mach/sun2/libsys/setregid.s [new file with mode: 0644]
mach/sun2/libsys/setreuid.s [new file with mode: 0644]
mach/sun2/libsys/setrlimit.s [new file with mode: 0644]
mach/sun2/libsys/setsockopt.s [new file with mode: 0644]
mach/sun2/libsys/settimday.s [new file with mode: 0644]
mach/sun2/libsys/setuid.c [new file with mode: 0644]
mach/sun2/libsys/shutdown.s [new file with mode: 0644]
mach/sun2/libsys/sigblock.s [new file with mode: 0644]
mach/sun2/libsys/signal.c [new file with mode: 0644]
mach/sun2/libsys/sigpause.s [new file with mode: 0644]
mach/sun2/libsys/sigsetmask.s [new file with mode: 0644]
mach/sun2/libsys/sigstack.s [new file with mode: 0644]
mach/sun2/libsys/sigtramp.s [new file with mode: 0644]
mach/sun2/libsys/sigvec.c [new file with mode: 0644]
mach/sun2/libsys/socket.s [new file with mode: 0644]
mach/sun2/libsys/socketpair.s [new file with mode: 0644]
mach/sun2/libsys/sstk.s [new file with mode: 0644]
mach/sun2/libsys/stat.s [new file with mode: 0644]
mach/sun2/libsys/statfs.s [new file with mode: 0644]
mach/sun2/libsys/stime.c [new file with mode: 0644]
mach/sun2/libsys/stty.c [new file with mode: 0644]
mach/sun2/libsys/swapon.s [new file with mode: 0644]
mach/sun2/libsys/symlink.s [new file with mode: 0644]
mach/sun2/libsys/sync.s [new file with mode: 0644]
mach/sun2/libsys/syscall.h [new file with mode: 0644]
mach/sun2/libsys/syscall.s [new file with mode: 0644]
mach/sun2/libsys/tell.c [new file with mode: 0644]
mach/sun2/libsys/time.c [new file with mode: 0644]
mach/sun2/libsys/times.c [new file with mode: 0644]
mach/sun2/libsys/truncate.s [new file with mode: 0644]
mach/sun2/libsys/ulimit.c [new file with mode: 0644]
mach/sun2/libsys/umask.s [new file with mode: 0644]
mach/sun2/libsys/unlink.s [new file with mode: 0644]
mach/sun2/libsys/unmount.s [new file with mode: 0644]
mach/sun2/libsys/utime.c [new file with mode: 0644]
mach/sun2/libsys/utimes.s [new file with mode: 0644]
mach/sun2/libsys/vadvise.s [new file with mode: 0644]
mach/sun2/libsys/vfork.s [new file with mode: 0644]
mach/sun2/libsys/vhangup.s [new file with mode: 0644]
mach/sun2/libsys/wait.s [new file with mode: 0644]
mach/sun2/libsys/wait3.s [new file with mode: 0644]
mach/sun2/libsys/write.s [new file with mode: 0644]
mach/sun2/libsys/writev.s [new file with mode: 0644]

diff --git a/mach/sun2/libsys/LIST b/mach/sun2/libsys/LIST
new file mode 100644 (file)
index 0000000..36c42dd
--- /dev/null
@@ -0,0 +1,150 @@
+libmon_s.a
+accept.s
+access.s
+acct.s
+adjtime.s
+alarm.c
+async_dem.s
+bind.s
+cerror.s
+chdir.s
+chmod.s
+chown.s
+chroot.s
+cleanup.c
+close.s
+connect.s
+creat.s
+dup.s
+dup2.s
+execl.c
+execle.c
+execv.c
+execve.s
+exit.c
+exportfs.s
+fchmod.s
+fchown.s
+fcntl.s
+flock.s
+fork.s
+fstat.s
+fstatfs.s
+fsync.s
+ftime.c
+ftruncate.s
+getdirent.s
+getdomnam.s
+getdopt.s
+getdtabsz.s
+getfh.s
+getgid.s
+getgroups.s
+gethostid.s
+gethostnam.s
+getitimer.s
+getpagesiz.s
+getpeernam.s
+getpgrp.s
+getpid.s
+getprio.s
+getrlimit.s
+getrusage.s
+getsocknam.s
+getsockopt.s
+gettimday.s
+getuid.s
+ioctl.s
+kill.s
+killpg.s
+link.s
+listen.s
+lseek.s
+lstat.s
+madvise.s
+mincore.s
+mkdir.s
+mknod.s
+mmap.s
+mount.s
+mprotect.s
+mremap.s
+munmap.s
+nfssvc.s
+nice.c
+open.s
+pause.c
+pipe.s
+profil.s
+ptrace.s
+quotactl.s
+read.s
+readlink.s
+readv.s
+reboot.s
+recv.s
+recvfrom.s
+recvmsg.s
+rename.s
+rmdir.s
+sbrk.s
+select.s
+send.s
+sendmsg.s
+sendto.s
+setdomnam.s
+setdopt.s
+setgroups.s
+sethostnam.s
+setitimer.s
+setpgrp.s
+setprio.s
+setregid.s
+setreuid.s
+setrlimit.s
+setsockopt.s
+settimday.s
+shutdown.s
+sigblock.s
+signal.c
+sigpause.s
+sigsetmask.s
+sigstack.s
+sigtramp.s
+sigvec.c
+socket.s
+socketpair.s
+sstk.s
+stat.s
+statfs.s
+swapon.s
+symlink.s
+sync.s
+syscall.s
+time.c
+times.c
+truncate.s
+umask.s
+unlink.s
+unmount.s
+utime.c
+utimes.s
+vhangup.s
+wait.s
+write.s
+writev.s
+_exit.s
+stty.c
+gtty.c
+getegid.s
+geteuid.s
+getppid.s
+lockf.c
+setgid.c
+setuid.c
+stime.c
+tell.c
+ulimit.c
+vadvise.s
+vfork.s
+wait3.s
diff --git a/mach/sun2/libsys/Makefile b/mach/sun2/libsys/Makefile
new file mode 100644 (file)
index 0000000..9132faa
--- /dev/null
@@ -0,0 +1,29 @@
+# $Header$
+MACH=sun2
+all:           libmon_o.a head_em.o
+
+install:       all
+               ../../install head_em.o head_em
+               ../../install libmon_o.a tail_mon
+
+
+cmp:           all
+               -../../compare head_em.o head_em
+               -../../compare libmon_o.a tail_mon
+
+libmon_o.a:    libmon_s.a
+               ASAR=aal ; export ASAR ;\
+               march . libmon_o.a
+
+head_em.o:     head_em.s
+               $(MACH) -I../../../h -c head_em.s
+
+clean:
+               rm -f *.o libmon_o.a
+
+opr :
+               make pr | opr
+
+pr:
+               @pr `pwd`/head_em.s
+               @arch pv libmon_s.a | pr -h `pwd`/libmon_s.a
diff --git a/mach/sun2/libsys/_exit.s b/mach/sun2/libsys/_exit.s
new file mode 100644 (file)
index 0000000..5ed3fe7
--- /dev/null
@@ -0,0 +1,7 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define __exit
+__exit:
+       pea     SYS_exit
+       trap    #0
+       jmp     cerror
diff --git a/mach/sun2/libsys/accept.s b/mach/sun2/libsys/accept.s
new file mode 100644 (file)
index 0000000..c7746ab
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _accept
+_accept: SYSTEM(SYS_accept)
diff --git a/mach/sun2/libsys/access.s b/mach/sun2/libsys/access.s
new file mode 100644 (file)
index 0000000..203953e
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _access
+_access: SYSTEM(SYS_access)
diff --git a/mach/sun2/libsys/acct.s b/mach/sun2/libsys/acct.s
new file mode 100644 (file)
index 0000000..d28b968
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _acct
+_acct: SYSTEM(SYS_acct)
diff --git a/mach/sun2/libsys/adjtime.s b/mach/sun2/libsys/adjtime.s
new file mode 100644 (file)
index 0000000..524996d
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _adjtime
+_adjtime: SYSTEM(SYS_adjtime)
diff --git a/mach/sun2/libsys/alarm.c b/mach/sun2/libsys/alarm.c
new file mode 100644 (file)
index 0000000..ddbf244
--- /dev/null
@@ -0,0 +1,13 @@
+unsigned
+alarm(n)
+       unsigned n;
+{
+       struct { long l1,l2,l3,l4; } t1,t2;
+       t1.l1 = 0;
+       t1.l2 = 0;
+       t1.l4 = 0;
+       t1.l3 = n;
+       if (setitimer(0,&t1,&t2) < 0) return -1;
+       if (t2.l4) t2.l3++;
+       return t2.l3;
+}
diff --git a/mach/sun2/libsys/async_dem.s b/mach/sun2/libsys/async_dem.s
new file mode 100644 (file)
index 0000000..cba18f3
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _async_daemon
+_async_daemon: SYSTEM(SYS_async_daemon)
diff --git a/mach/sun2/libsys/bind.s b/mach/sun2/libsys/bind.s
new file mode 100644 (file)
index 0000000..28441a4
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _bind
+_bind: SYSTEM(SYS_bind)
diff --git a/mach/sun2/libsys/cerror.s b/mach/sun2/libsys/cerror.s
new file mode 100644 (file)
index 0000000..21ee49c
--- /dev/null
@@ -0,0 +1,9 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define cerror,_errno
+cerror:
+       move.l  d0,_errno
+       move.l  #-1,d0
+       rts
+
+.sect .bss
+_errno:        .space 4
diff --git a/mach/sun2/libsys/chdir.s b/mach/sun2/libsys/chdir.s
new file mode 100644 (file)
index 0000000..2deb808
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _chdir
+_chdir: SYSTEM(SYS_chdir)
diff --git a/mach/sun2/libsys/chmod.s b/mach/sun2/libsys/chmod.s
new file mode 100644 (file)
index 0000000..cf8d366
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _chmod
+_chmod: SYSTEM(SYS_chmod)
diff --git a/mach/sun2/libsys/chown.s b/mach/sun2/libsys/chown.s
new file mode 100644 (file)
index 0000000..ff635d5
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _chown
+_chown: SYSTEM(SYS_chown)
diff --git a/mach/sun2/libsys/chroot.s b/mach/sun2/libsys/chroot.s
new file mode 100644 (file)
index 0000000..a8a1616
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _chroot
+_chroot: SYSTEM(SYS_chroot)
diff --git a/mach/sun2/libsys/cleanup.c b/mach/sun2/libsys/cleanup.c
new file mode 100644 (file)
index 0000000..6cd9c63
--- /dev/null
@@ -0,0 +1 @@
+_cleanup() { }
diff --git a/mach/sun2/libsys/close.s b/mach/sun2/libsys/close.s
new file mode 100644 (file)
index 0000000..8e7b0ac
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _close
+_close: SYSTEM(SYS_close)
diff --git a/mach/sun2/libsys/compmodule b/mach/sun2/libsys/compmodule
new file mode 100755 (executable)
index 0000000..0e6fe92
--- /dev/null
@@ -0,0 +1,4 @@
+if sun2 -c -L $1 1>&2
+then echo `basename $1 $2`.o
+else exit 1
+fi
diff --git a/mach/sun2/libsys/connect.s b/mach/sun2/libsys/connect.s
new file mode 100644 (file)
index 0000000..b2ee043
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _connect
+_connect: SYSTEM(SYS_connect)
diff --git a/mach/sun2/libsys/creat.s b/mach/sun2/libsys/creat.s
new file mode 100644 (file)
index 0000000..1cd2f23
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _creat
+_creat: SYSTEM(SYS_creat)
diff --git a/mach/sun2/libsys/dup.s b/mach/sun2/libsys/dup.s
new file mode 100644 (file)
index 0000000..dcaa275
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _dup
+_dup: SYSTEM(SYS_dup)
diff --git a/mach/sun2/libsys/dup2.s b/mach/sun2/libsys/dup2.s
new file mode 100644 (file)
index 0000000..bb32d50
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _dup2
+_dup2: SYSTEM(SYS_dup2)
diff --git a/mach/sun2/libsys/execl.c b/mach/sun2/libsys/execl.c
new file mode 100644 (file)
index 0000000..9989439
--- /dev/null
@@ -0,0 +1,8 @@
+execl(name,args)
+       char *name;
+       int args;
+{
+       extern char **environ;
+
+       execve(name,&args,environ);
+}
diff --git a/mach/sun2/libsys/execle.c b/mach/sun2/libsys/execle.c
new file mode 100644 (file)
index 0000000..aed0363
--- /dev/null
@@ -0,0 +1,9 @@
+execle(name,args)
+       char *name;
+       char *args;
+{
+       char **p = &args;
+       while (*p++) ;
+
+       execve(name,&args,*p);
+}
diff --git a/mach/sun2/libsys/execv.c b/mach/sun2/libsys/execv.c
new file mode 100644 (file)
index 0000000..200486f
--- /dev/null
@@ -0,0 +1,7 @@
+execv(name,args)
+       char *name;
+       char **args;
+{
+       extern char **environ;
+       execve(name,args,environ);
+}
diff --git a/mach/sun2/libsys/execve.s b/mach/sun2/libsys/execve.s
new file mode 100644 (file)
index 0000000..915c86d
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _execve
+_execve: SYSTEM(SYS_execve)
diff --git a/mach/sun2/libsys/exit.c b/mach/sun2/libsys/exit.c
new file mode 100644 (file)
index 0000000..afd54b3
--- /dev/null
@@ -0,0 +1,5 @@
+exit(n)
+{
+       _cleanup();
+       _exit(n);
+}
diff --git a/mach/sun2/libsys/exportfs.s b/mach/sun2/libsys/exportfs.s
new file mode 100644 (file)
index 0000000..d406ccb
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _exportfs
+_exportfs: SYSTEM(SYS_exportfs)
diff --git a/mach/sun2/libsys/fchmod.s b/mach/sun2/libsys/fchmod.s
new file mode 100644 (file)
index 0000000..b2cb8d8
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _fchmod
+_fchmod: SYSTEM(SYS_fchmod)
diff --git a/mach/sun2/libsys/fchown.s b/mach/sun2/libsys/fchown.s
new file mode 100644 (file)
index 0000000..38627b8
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _fchown
+_fchown: SYSTEM(SYS_fchown)
diff --git a/mach/sun2/libsys/fcntl.s b/mach/sun2/libsys/fcntl.s
new file mode 100644 (file)
index 0000000..c8baec2
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _fcntl
+_fcntl: SYSTEM(SYS_fcntl)
diff --git a/mach/sun2/libsys/flock.s b/mach/sun2/libsys/flock.s
new file mode 100644 (file)
index 0000000..d98cd8d
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _flock
+_flock: SYSTEM(SYS_flock)
diff --git a/mach/sun2/libsys/fork.s b/mach/sun2/libsys/fork.s
new file mode 100644 (file)
index 0000000..9f095d1
--- /dev/null
@@ -0,0 +1,14 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _fork
+_fork:
+       pea     SYS_fork
+       trap    #0
+       bcs     1f
+       tst.l   d1
+       beq     2f
+       clr.l   d0
+2:
+       rts
+1:
+       jmp     cerror
diff --git a/mach/sun2/libsys/fstat.s b/mach/sun2/libsys/fstat.s
new file mode 100644 (file)
index 0000000..c3df3de
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _fstat
+_fstat: SYSTEM(SYS_fstat)
diff --git a/mach/sun2/libsys/fstatfs.s b/mach/sun2/libsys/fstatfs.s
new file mode 100644 (file)
index 0000000..f151cb1
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _fstatfs
+_fstatfs: SYSTEM(SYS_fstatfs)
diff --git a/mach/sun2/libsys/fsync.s b/mach/sun2/libsys/fsync.s
new file mode 100644 (file)
index 0000000..444b614
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _fsync
+_fsync: SYSTEM(SYS_fsync)
diff --git a/mach/sun2/libsys/ftime.c b/mach/sun2/libsys/ftime.c
new file mode 100644 (file)
index 0000000..af4047c
--- /dev/null
@@ -0,0 +1,15 @@
+#include <sys/types.h>
+
+ftime(p)
+       struct { time_t time; unsigned short millitm;
+                short timezone; short dstflag; } *p;
+{
+       struct { long l1,l2; } t1,t2;
+
+       if (gettimeofday(&t1,&t2) < 0) return -1;
+       p->time = t1.l1;
+       p->millitm = t1.l2/1000;
+       p->dstflag = t2.l2;
+       p->timezone = t2.l1;
+       return 0;
+}
diff --git a/mach/sun2/libsys/ftruncate.s b/mach/sun2/libsys/ftruncate.s
new file mode 100644 (file)
index 0000000..37ba7a6
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _ftruncate
+_ftruncate: SYSTEM(SYS_ftruncate)
diff --git a/mach/sun2/libsys/getdirent.s b/mach/sun2/libsys/getdirent.s
new file mode 100644 (file)
index 0000000..2ae2872
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getdirentries
+_getdirentries: SYSTEM(SYS_getdirentries)
diff --git a/mach/sun2/libsys/getdomnam.s b/mach/sun2/libsys/getdomnam.s
new file mode 100644 (file)
index 0000000..172e9f0
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getdomainname
+_getdomainname: SYSTEM(SYS_getdomainname)
diff --git a/mach/sun2/libsys/getdopt.s b/mach/sun2/libsys/getdopt.s
new file mode 100644 (file)
index 0000000..27c9795
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getdopt
+_getdopt: SYSTEM(SYS_getdopt)
diff --git a/mach/sun2/libsys/getdtabsz.s b/mach/sun2/libsys/getdtabsz.s
new file mode 100644 (file)
index 0000000..db27431
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getdtablesize
+_getdtablesize: SYSTEM(SYS_getdtablesize)
diff --git a/mach/sun2/libsys/getegid.s b/mach/sun2/libsys/getegid.s
new file mode 100644 (file)
index 0000000..b434b2f
--- /dev/null
@@ -0,0 +1,8 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getegid
+_getegid:
+       pea     SYS_getgid
+       trap    #0
+       move.l  d1,d0
+       rts
diff --git a/mach/sun2/libsys/geteuid.s b/mach/sun2/libsys/geteuid.s
new file mode 100644 (file)
index 0000000..5d03df4
--- /dev/null
@@ -0,0 +1,8 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _geteuid
+_geteuid:
+       pea     SYS_getuid
+       trap    #0
+       move.l  d1,d0
+       rts
diff --git a/mach/sun2/libsys/getfh.s b/mach/sun2/libsys/getfh.s
new file mode 100644 (file)
index 0000000..cbe8665
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getfh
+_getfh: SYSTEM(SYS_getfh)
diff --git a/mach/sun2/libsys/getgid.s b/mach/sun2/libsys/getgid.s
new file mode 100644 (file)
index 0000000..76569d0
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getgid
+_getgid: SYSTEM(SYS_getgid)
diff --git a/mach/sun2/libsys/getgroups.s b/mach/sun2/libsys/getgroups.s
new file mode 100644 (file)
index 0000000..e9da4d8
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getgroups
+_getgroups: SYSTEM(SYS_getgroups)
diff --git a/mach/sun2/libsys/gethostid.s b/mach/sun2/libsys/gethostid.s
new file mode 100644 (file)
index 0000000..07db17a
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _gethostid
+_gethostid: SYSTEM(SYS_gethostid)
diff --git a/mach/sun2/libsys/gethostnam.s b/mach/sun2/libsys/gethostnam.s
new file mode 100644 (file)
index 0000000..107643f
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _gethostname
+_gethostname: SYSTEM(SYS_gethostname)
diff --git a/mach/sun2/libsys/getitimer.s b/mach/sun2/libsys/getitimer.s
new file mode 100644 (file)
index 0000000..8d33cb8
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getitimer
+_getitimer: SYSTEM(SYS_getitimer)
diff --git a/mach/sun2/libsys/getpagesiz.s b/mach/sun2/libsys/getpagesiz.s
new file mode 100644 (file)
index 0000000..7c8c714
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getpagesize
+_getpagesize: SYSTEM(SYS_getpagesize)
diff --git a/mach/sun2/libsys/getpeernam.s b/mach/sun2/libsys/getpeernam.s
new file mode 100644 (file)
index 0000000..d1e6e38
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getpeername
+_getpeername: SYSTEM(SYS_getpeername)
diff --git a/mach/sun2/libsys/getpgrp.s b/mach/sun2/libsys/getpgrp.s
new file mode 100644 (file)
index 0000000..904c10a
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getpgrp
+_getpgrp: SYSTEM(SYS_getpgrp)
diff --git a/mach/sun2/libsys/getpid.s b/mach/sun2/libsys/getpid.s
new file mode 100644 (file)
index 0000000..192e55f
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getpid
+_getpid: SYSTEM(SYS_getpid)
diff --git a/mach/sun2/libsys/getppid.s b/mach/sun2/libsys/getppid.s
new file mode 100644 (file)
index 0000000..db2b52b
--- /dev/null
@@ -0,0 +1,8 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getppid
+_getppid:
+       pea     SYS_getpid
+       trap    #0
+       move.l  d1,d0
+       rts
diff --git a/mach/sun2/libsys/getprio.s b/mach/sun2/libsys/getprio.s
new file mode 100644 (file)
index 0000000..1e35849
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getpriority
+_getpriority: SYSTEM(SYS_getpriority)
diff --git a/mach/sun2/libsys/getrlimit.s b/mach/sun2/libsys/getrlimit.s
new file mode 100644 (file)
index 0000000..076d022
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getrlimit
+_getrlimit: SYSTEM(SYS_getrlimit)
diff --git a/mach/sun2/libsys/getrusage.s b/mach/sun2/libsys/getrusage.s
new file mode 100644 (file)
index 0000000..091010d
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getrusage
+_getrusage: SYSTEM(SYS_getrusage)
diff --git a/mach/sun2/libsys/getsocknam.s b/mach/sun2/libsys/getsocknam.s
new file mode 100644 (file)
index 0000000..477e0b1
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getsockname
+_getsockname: SYSTEM(SYS_getsockname)
diff --git a/mach/sun2/libsys/getsockopt.s b/mach/sun2/libsys/getsockopt.s
new file mode 100644 (file)
index 0000000..20878c2
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getsockopt
+_getsockopt: SYSTEM(SYS_getsockopt)
diff --git a/mach/sun2/libsys/gettimday.s b/mach/sun2/libsys/gettimday.s
new file mode 100644 (file)
index 0000000..63c8c8a
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _gettimeofday
+_gettimeofday: SYSTEM(SYS_gettimeofday)
diff --git a/mach/sun2/libsys/getuid.s b/mach/sun2/libsys/getuid.s
new file mode 100644 (file)
index 0000000..86dd28f
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _getuid
+_getuid: SYSTEM(SYS_getuid)
diff --git a/mach/sun2/libsys/gtty.c b/mach/sun2/libsys/gtty.c
new file mode 100644 (file)
index 0000000..7f42ea1
--- /dev/null
@@ -0,0 +1,7 @@
+#include <sgtty.h>
+int gtty(fildes,argp)
+       int fildes ;
+       struct sgttyb *argp ;
+{
+       return ioctl(fildes,TIOCGETP,argp) ;
+}
diff --git a/mach/sun2/libsys/head_em.s b/mach/sun2/libsys/head_em.s
new file mode 100644 (file)
index 0000000..06b6174
--- /dev/null
@@ -0,0 +1,65 @@
+.define .lino,.filn
+.define EXIT
+.define        begtext,begdata,begbss
+.define        EARRAY,ERANGE,ESET,EIDIVZ,EHEAP,EILLINS,ECASE,EBADGTO
+.define        hol0,.reghp,.limhp,.trpim,.trppc
+.sect .text
+.sect .rom
+.sect .data
+.sect .bss
+
+
+
+! runtime startof for 68020 machine
+
+
+LINO_AD        = 0
+FILN_AD        = 4
+
+EARRAY = 0
+ERANGE = 1
+ESET   = 2
+EIDIVZ = 6
+EHEAP  = 17
+EILLINS        = 18
+ECASE  = 20
+EBADGTO = 27
+
+       .sect .text
+begtext:
+       move.l  (sp),d2
+       lea     4(sp),a0
+       move.l  d2,d1
+       add.l   #1,d1
+       asl.l   #2,d1
+       move.l  a0,a1
+       add.l   d1,a1
+       pea     (a1)
+       pea     (a0)
+       move.l  d2,-(sp)
+       move.l  #0,a6
+       jsr     _m_a_i_n
+       move.l  d0,(sp)         ! no stack cleanup needed
+EXIT:
+       jsr     _exit
+
+       .sect .data
+begdata:
+       .data4 0                ! may be at virtual address 0 with no problem
+hol0:
+.lino:
+       .data4  0       ! lino
+.filn:
+       .data4  0       ! filn
+.reghp:
+       .data4  endbss
+.limhp:
+       .data4  endbss
+.trppc:
+       .data4  0
+.trpim:
+       .data4  0       ! USED TO BE 2 BYTES; IS THIS RIGHT?
+
+
+       .sect .bss
+begbss: !initialization is not needed because ALL entries are in zero space!
diff --git a/mach/sun2/libsys/ioctl.s b/mach/sun2/libsys/ioctl.s
new file mode 100644 (file)
index 0000000..1d90f16
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _ioctl
+_ioctl: SYSTEM(SYS_ioctl)
diff --git a/mach/sun2/libsys/kill.s b/mach/sun2/libsys/kill.s
new file mode 100644 (file)
index 0000000..ad723cc
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _kill
+_kill: SYSTEM(SYS_kill)
diff --git a/mach/sun2/libsys/killpg.s b/mach/sun2/libsys/killpg.s
new file mode 100644 (file)
index 0000000..8318d61
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _killpg
+_killpg: SYSTEM(SYS_killpg)
diff --git a/mach/sun2/libsys/link.s b/mach/sun2/libsys/link.s
new file mode 100644 (file)
index 0000000..1968b8e
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _link
+_link: SYSTEM(SYS_link)
diff --git a/mach/sun2/libsys/listen.s b/mach/sun2/libsys/listen.s
new file mode 100644 (file)
index 0000000..e0c5e8a
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _listen
+_listen: SYSTEM(SYS_listen)
diff --git a/mach/sun2/libsys/lockf.c b/mach/sun2/libsys/lockf.c
new file mode 100644 (file)
index 0000000..43764d4
--- /dev/null
@@ -0,0 +1,43 @@
+#include <errno.h>
+lockf(fildes, mode, size)
+       long size;
+{
+       struct {
+               short type, whence; long start, end; short pid;
+       } x;
+       int i = 8;
+       extern int errno;
+
+       x.type = 2;
+       x.whence = 1;
+       x.start = 0;
+       x.end = size;
+       switch(mode) {
+       case 0:
+               x.type = 3;
+               break;
+       case 1:
+               i = 9;
+               break;
+       case 2:
+               break;
+       case 3:
+               if (fcntl(fildes,7,&x) == -1) {
+                       return -1;
+               }
+               if (x.type == 3) {
+                       return 0;
+               }
+               errno = EACCES;
+               return -1;
+       default:
+               errno = EINVAL;
+               return -1;
+       }
+       if (fcntl(fildes,i,&x) == -1) {
+               if (errno = 79) {
+                       errno = 78;
+               }
+               return -1;
+       }
+}
diff --git a/mach/sun2/libsys/lseek.s b/mach/sun2/libsys/lseek.s
new file mode 100644 (file)
index 0000000..ea2f18e
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _lseek
+_lseek: SYSTEM(SYS_lseek)
diff --git a/mach/sun2/libsys/lstat.s b/mach/sun2/libsys/lstat.s
new file mode 100644 (file)
index 0000000..b6e4ffe
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _lstat
+_lstat: SYSTEM(SYS_lstat)
diff --git a/mach/sun2/libsys/madvise.s b/mach/sun2/libsys/madvise.s
new file mode 100644 (file)
index 0000000..310b5d4
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _madvise
+_madvise: SYSTEM(SYS_madvise)
diff --git a/mach/sun2/libsys/mincore.s b/mach/sun2/libsys/mincore.s
new file mode 100644 (file)
index 0000000..d796853
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _mincore
+_mincore: SYSTEM(SYS_mincore)
diff --git a/mach/sun2/libsys/mkdir.s b/mach/sun2/libsys/mkdir.s
new file mode 100644 (file)
index 0000000..6312804
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _mkdir
+_mkdir: SYSTEM(SYS_mkdir)
diff --git a/mach/sun2/libsys/mknod.s b/mach/sun2/libsys/mknod.s
new file mode 100644 (file)
index 0000000..75577fb
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _mknod
+_mknod: SYSTEM(SYS_mknod)
diff --git a/mach/sun2/libsys/mmap.s b/mach/sun2/libsys/mmap.s
new file mode 100644 (file)
index 0000000..323b7ef
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _mmap
+_mmap: SYSTEM(SYS_mmap)
diff --git a/mach/sun2/libsys/mount.s b/mach/sun2/libsys/mount.s
new file mode 100644 (file)
index 0000000..bc55d3a
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _mount
+_mount: SYSTEM(SYS_mount)
diff --git a/mach/sun2/libsys/mprotect.s b/mach/sun2/libsys/mprotect.s
new file mode 100644 (file)
index 0000000..eda5fa6
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _mprotect
+_mprotect: SYSTEM(SYS_mprotect)
diff --git a/mach/sun2/libsys/mremap.s b/mach/sun2/libsys/mremap.s
new file mode 100644 (file)
index 0000000..7506f66
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _mremap
+_mremap: SYSTEM(SYS_mremap)
diff --git a/mach/sun2/libsys/munmap.s b/mach/sun2/libsys/munmap.s
new file mode 100644 (file)
index 0000000..8f420d1
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _munmap
+_munmap: SYSTEM(SYS_munmap)
diff --git a/mach/sun2/libsys/nfssvc.s b/mach/sun2/libsys/nfssvc.s
new file mode 100644 (file)
index 0000000..0082a79
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _nfssvc
+_nfssvc: SYSTEM(SYS_nfssvc)
diff --git a/mach/sun2/libsys/nice.c b/mach/sun2/libsys/nice.c
new file mode 100644 (file)
index 0000000..2350566
--- /dev/null
@@ -0,0 +1,13 @@
+nice(incr)
+{
+       extern int errno;
+       int sav = errno;
+       int prio;
+
+       errno = 0;
+       prio = getpriority(0,0);
+       if (prio == -1 && errno) return -1;
+       if (setpriority(0,0,prio+incr) < 0) return -1;
+       errno = sav;
+       return 0;
+}
diff --git a/mach/sun2/libsys/open.s b/mach/sun2/libsys/open.s
new file mode 100644 (file)
index 0000000..9419b0b
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _open
+_open: SYSTEM(SYS_open)
diff --git a/mach/sun2/libsys/pause.c b/mach/sun2/libsys/pause.c
new file mode 100644 (file)
index 0000000..97c0242
--- /dev/null
@@ -0,0 +1,3 @@
+pause() {
+       sigpause(sigblock());
+}
diff --git a/mach/sun2/libsys/pipe.s b/mach/sun2/libsys/pipe.s
new file mode 100644 (file)
index 0000000..21102ef
--- /dev/null
@@ -0,0 +1,14 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _pipe
+_pipe:
+       pea     SYS_pipe
+       trap    #0
+       bcs     1f
+       move.l  4(sp),a0
+       move.l  d0,(a0)+
+       move.l  d1,(a0)
+       clr.l   d0
+       rts
+1:
+       jmp     cerror
diff --git a/mach/sun2/libsys/profil.s b/mach/sun2/libsys/profil.s
new file mode 100644 (file)
index 0000000..be107bf
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _profil
+_profil: SYSTEM(SYS_profil)
diff --git a/mach/sun2/libsys/ptrace.s b/mach/sun2/libsys/ptrace.s
new file mode 100644 (file)
index 0000000..92ca09b
--- /dev/null
@@ -0,0 +1,7 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _ptrace
+.extern _errno
+_ptrace:
+       clr.l   _errno
+       SYSTEM(SYS_ptrace)
diff --git a/mach/sun2/libsys/quotactl.s b/mach/sun2/libsys/quotactl.s
new file mode 100644 (file)
index 0000000..88a2469
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _quotactl
+_quotactl: SYSTEM(SYS_quotactl)
diff --git a/mach/sun2/libsys/read.s b/mach/sun2/libsys/read.s
new file mode 100644 (file)
index 0000000..de9df79
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _read
+_read: SYSTEM(SYS_read)
diff --git a/mach/sun2/libsys/readlink.s b/mach/sun2/libsys/readlink.s
new file mode 100644 (file)
index 0000000..18fd733
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _readlink
+_readlink: SYSTEM(SYS_readlink)
diff --git a/mach/sun2/libsys/readv.s b/mach/sun2/libsys/readv.s
new file mode 100644 (file)
index 0000000..43c5cc8
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _readv
+_readv: SYSTEM(SYS_readv)
diff --git a/mach/sun2/libsys/reboot.s b/mach/sun2/libsys/reboot.s
new file mode 100644 (file)
index 0000000..4ba34fb
--- /dev/null
@@ -0,0 +1,10 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _reboot
+_reboot:
+       pea     SYS_reboot
+       trap    #0
+       bcs     1f
+       stop    #0
+1:
+       jmp     cerror
diff --git a/mach/sun2/libsys/recv.s b/mach/sun2/libsys/recv.s
new file mode 100644 (file)
index 0000000..16fd7a5
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _recv
+_recv: SYSTEM(SYS_recv)
diff --git a/mach/sun2/libsys/recvfrom.s b/mach/sun2/libsys/recvfrom.s
new file mode 100644 (file)
index 0000000..1c94fea
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _recvfrom
+_recvfrom: SYSTEM(SYS_recvfrom)
diff --git a/mach/sun2/libsys/recvmsg.s b/mach/sun2/libsys/recvmsg.s
new file mode 100644 (file)
index 0000000..9bac273
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _recvmsg
+_recvmsg: SYSTEM(SYS_recvmsg)
diff --git a/mach/sun2/libsys/rename.s b/mach/sun2/libsys/rename.s
new file mode 100644 (file)
index 0000000..79b51bc
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _rename
+_rename: SYSTEM(SYS_rename)
diff --git a/mach/sun2/libsys/rmdir.s b/mach/sun2/libsys/rmdir.s
new file mode 100644 (file)
index 0000000..34395d0
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _rmdir
+_rmdir: SYSTEM(SYS_rmdir)
diff --git a/mach/sun2/libsys/sbrk.s b/mach/sun2/libsys/sbrk.s
new file mode 100644 (file)
index 0000000..62aba66
--- /dev/null
@@ -0,0 +1,39 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _sbrk,_brk
+_sbrk:
+       move.l  4(sp),d0
+       add.l   #3,d0
+       move.l  #~3,d1
+       and.l   d1,d0
+       move.l  d0,a0
+       move.l  curbrk,d0
+       add.l   #3,d0
+       and.l   d1,d0
+       move.l  d0,curbrk
+       add.l   d0,a0
+       move.l  a0,4(sp)
+       pea     17      ! not SYS_sbrk
+       trap    #0
+       bcs     1f
+       move.l  curbrk,d0
+       move.l  4(sp),curbrk
+       rts
+1:
+       jmp     cerror
+
+_brk:
+       move.l  4(sp),d0
+       add.l   #3,d0
+       move.l  #~3,d1
+       and.l   d1,d0
+       move.l  d0,4(sp)
+       pea     17
+       trap    #0
+       bcs     1b
+       move.l  4(sp),curbrk
+       clr.l   d0
+       rts
+
+.sect .data
+curbrk:        .data4 endbss
diff --git a/mach/sun2/libsys/select.s b/mach/sun2/libsys/select.s
new file mode 100644 (file)
index 0000000..7f0425b
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _select
+_select: SYSTEM(SYS_select)
diff --git a/mach/sun2/libsys/send.s b/mach/sun2/libsys/send.s
new file mode 100644 (file)
index 0000000..7297043
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _send
+_send: SYSTEM(SYS_send)
diff --git a/mach/sun2/libsys/sendmsg.s b/mach/sun2/libsys/sendmsg.s
new file mode 100644 (file)
index 0000000..3d38f3b
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _sendmsg
+_sendmsg: SYSTEM(SYS_sendmsg)
diff --git a/mach/sun2/libsys/sendto.s b/mach/sun2/libsys/sendto.s
new file mode 100644 (file)
index 0000000..22d7523
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _sendto
+_sendto: SYSTEM(SYS_sendto)
diff --git a/mach/sun2/libsys/setdomnam.s b/mach/sun2/libsys/setdomnam.s
new file mode 100644 (file)
index 0000000..3bfeb0c
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _setdomainname
+_setdomainname: SYSTEM(SYS_setdomainname)
diff --git a/mach/sun2/libsys/setdopt.s b/mach/sun2/libsys/setdopt.s
new file mode 100644 (file)
index 0000000..65674e8
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _setdopt
+_setdopt: SYSTEM(SYS_setdopt)
diff --git a/mach/sun2/libsys/setgid.c b/mach/sun2/libsys/setgid.c
new file mode 100644 (file)
index 0000000..c51a4d0
--- /dev/null
@@ -0,0 +1,4 @@
+setgid(u)
+{
+       return setregid(u,u);
+}
diff --git a/mach/sun2/libsys/setgroups.s b/mach/sun2/libsys/setgroups.s
new file mode 100644 (file)
index 0000000..f3ad691
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _setgroups
+_setgroups: SYSTEM(SYS_setgroups)
diff --git a/mach/sun2/libsys/sethostnam.s b/mach/sun2/libsys/sethostnam.s
new file mode 100644 (file)
index 0000000..b4756c7
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _sethostname
+_sethostname: SYSTEM(SYS_sethostname)
diff --git a/mach/sun2/libsys/setitimer.s b/mach/sun2/libsys/setitimer.s
new file mode 100644 (file)
index 0000000..acdf385
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _setitimer
+_setitimer: SYSTEM(SYS_setitimer)
diff --git a/mach/sun2/libsys/setpgrp.s b/mach/sun2/libsys/setpgrp.s
new file mode 100644 (file)
index 0000000..9ef2fd6
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _setpgrp
+_setpgrp: SYSTEM(SYS_setpgrp)
diff --git a/mach/sun2/libsys/setprio.s b/mach/sun2/libsys/setprio.s
new file mode 100644 (file)
index 0000000..0004f5b
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _setpriority
+_setpriority: SYSTEM(SYS_setpriority)
diff --git a/mach/sun2/libsys/setregid.s b/mach/sun2/libsys/setregid.s
new file mode 100644 (file)
index 0000000..9c4206b
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _setregid
+_setregid: SYSTEM(SYS_setregid)
diff --git a/mach/sun2/libsys/setreuid.s b/mach/sun2/libsys/setreuid.s
new file mode 100644 (file)
index 0000000..b0a9d85
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _setreuid
+_setreuid: SYSTEM(SYS_setreuid)
diff --git a/mach/sun2/libsys/setrlimit.s b/mach/sun2/libsys/setrlimit.s
new file mode 100644 (file)
index 0000000..8f39b3f
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _setrlimit
+_setrlimit: SYSTEM(SYS_setrlimit)
diff --git a/mach/sun2/libsys/setsockopt.s b/mach/sun2/libsys/setsockopt.s
new file mode 100644 (file)
index 0000000..8a0a340
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _setsockopt
+_setsockopt: SYSTEM(SYS_setsockopt)
diff --git a/mach/sun2/libsys/settimday.s b/mach/sun2/libsys/settimday.s
new file mode 100644 (file)
index 0000000..30f7ed9
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _settimeofday
+_settimeofday: SYSTEM(SYS_settimeofday)
diff --git a/mach/sun2/libsys/setuid.c b/mach/sun2/libsys/setuid.c
new file mode 100644 (file)
index 0000000..04a8734
--- /dev/null
@@ -0,0 +1,4 @@
+setuid(u)
+{
+       return setreuid(u,u);
+}
diff --git a/mach/sun2/libsys/shutdown.s b/mach/sun2/libsys/shutdown.s
new file mode 100644 (file)
index 0000000..a7400a1
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _shutdown
+_shutdown: SYSTEM(SYS_shutdown)
diff --git a/mach/sun2/libsys/sigblock.s b/mach/sun2/libsys/sigblock.s
new file mode 100644 (file)
index 0000000..fd2393d
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _sigblock
+_sigblock: SYSTEM(SYS_sigblock)
diff --git a/mach/sun2/libsys/signal.c b/mach/sun2/libsys/signal.c
new file mode 100644 (file)
index 0000000..5c829ae
--- /dev/null
@@ -0,0 +1,25 @@
+static long masks[32];
+static long flags[32];
+int (*
+signal(sig,handler))()
+       int (*handler)();
+{
+       struct {
+               int (*sv_handler)();
+               long    sv_mask;
+               long    sv_flags;
+       } v, ov;
+
+       v.sv_handler = handler;
+       v.sv_mask = masks[sig];
+       v.sv_flags = flags[sig];
+       if (sigvec(sig,&v, &ov) < 0) return (int (*)()) -1;
+       if (v.sv_mask != ov.sv_mask || v.sv_flags != ov.sv_flags) {
+               v.sv_mask = ov.sv_mask;
+               masks[sig] = ov.sv_mask;
+               v.sv_flags = ov.sv_flags;
+               flags[sig] = ov.sv_flags;
+               if (sigvec(sig,&v,(char *) 0) < 0) return (int (*)()) -1;
+       }
+       return ov.sv_handler;
+}
diff --git a/mach/sun2/libsys/sigpause.s b/mach/sun2/libsys/sigpause.s
new file mode 100644 (file)
index 0000000..b58223d
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _sigpause
+_sigpause: SYSTEM(SYS_sigpause)
diff --git a/mach/sun2/libsys/sigsetmask.s b/mach/sun2/libsys/sigsetmask.s
new file mode 100644 (file)
index 0000000..fab366a
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _sigsetmask
+_sigsetmask: SYSTEM(SYS_sigsetmask)
diff --git a/mach/sun2/libsys/sigstack.s b/mach/sun2/libsys/sigstack.s
new file mode 100644 (file)
index 0000000..efbf6d8
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _sigstack
+_sigstack: SYSTEM(SYS_sigstack)
diff --git a/mach/sun2/libsys/sigtramp.s b/mach/sun2/libsys/sigtramp.s
new file mode 100644 (file)
index 0000000..e7b1090
--- /dev/null
@@ -0,0 +1,19 @@
+.sect .text
+.define __sigtramp
+__sigtramp:
+       movem.l d0/d1/a0/a1,-(sp)
+       move.l  _sigfunc,d1
+       move.l  0x14(sp),d0
+       lsl.l   #2,d0
+       add.l   d1,d0
+       move.l  d0,a0
+       move.l  (a0),a0
+       move.l  0x1c(sp),-(sp)
+       move.l  0x1c(sp),-(sp)
+       move.l  0x1c(sp),-(sp)
+       jsr     (a0)
+       add.l   #12,sp
+       movem.l (sp)+,d0/d1/a0/a1
+       add.l   #8,sp
+       pea     0x8b
+       trap    #0
diff --git a/mach/sun2/libsys/sigvec.c b/mach/sun2/libsys/sigvec.c
new file mode 100644 (file)
index 0000000..d3e9205
--- /dev/null
@@ -0,0 +1,35 @@
+#include "syscall.h"
+#include <errno.h>
+struct sigvec { int (*handler)(); int mask,flags; };
+int (*(_sigfunc[32]))();
+extern int _sigtramp();
+
+sigvec(sig,vec,ovec)
+       register struct sigvec *vec;
+       struct sigvec *ovec;
+{
+       struct sigvec tmp;
+       int (*old)();
+
+       if ((unsigned) sig >= 32) {
+               errno = EINVAL;
+               return -1;
+       }
+       old = _sigfunc[sig];
+       if (vec) {
+               tmp = *vec;
+               vec = &tmp;
+               if (vec->handler && vec->handler != (int (*)()) 1) {
+                       _sigfunc[sig] = vec->handler;
+                       vec->handler = _sigtramp;
+               }
+       }
+       if (syscall(SYS_sigvec,sig,vec,ovec) < 0) {
+               _sigfunc[sig] = old;
+               return -1;
+       }
+       if (ovec->handler == _sigtramp) {
+               ovec->handler = old;
+       }
+       return 0;
+}
diff --git a/mach/sun2/libsys/socket.s b/mach/sun2/libsys/socket.s
new file mode 100644 (file)
index 0000000..6494aee
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _socket
+_socket: SYSTEM(SYS_socket)
diff --git a/mach/sun2/libsys/socketpair.s b/mach/sun2/libsys/socketpair.s
new file mode 100644 (file)
index 0000000..f02d06e
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _socketpair
+_socketpair: SYSTEM(SYS_socketpair)
diff --git a/mach/sun2/libsys/sstk.s b/mach/sun2/libsys/sstk.s
new file mode 100644 (file)
index 0000000..30f6900
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _sstk
+_sstk: SYSTEM(SYS_sstk)
diff --git a/mach/sun2/libsys/stat.s b/mach/sun2/libsys/stat.s
new file mode 100644 (file)
index 0000000..37067e6
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _stat
+_stat: SYSTEM(SYS_stat)
diff --git a/mach/sun2/libsys/statfs.s b/mach/sun2/libsys/statfs.s
new file mode 100644 (file)
index 0000000..8af106a
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _statfs
+_statfs: SYSTEM(SYS_statfs)
diff --git a/mach/sun2/libsys/stime.c b/mach/sun2/libsys/stime.c
new file mode 100644 (file)
index 0000000..b13ee43
--- /dev/null
@@ -0,0 +1,9 @@
+stime(tp)
+       long *tp;
+{
+       struct { long l1,l2; } x;
+
+       x.l1 = *tp;
+       x.l2 = 0;
+       return settimeofday(&x, (char *) 0);
+}
diff --git a/mach/sun2/libsys/stty.c b/mach/sun2/libsys/stty.c
new file mode 100644 (file)
index 0000000..222310c
--- /dev/null
@@ -0,0 +1,7 @@
+#include <sgtty.h>
+int stty(fildes,argp)
+       int fildes ;
+       struct sgttyb *argp ;
+{
+       return ioctl(fildes,TIOCSETP,argp) ;
+}
diff --git a/mach/sun2/libsys/swapon.s b/mach/sun2/libsys/swapon.s
new file mode 100644 (file)
index 0000000..d694789
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _swapon
+_swapon: SYSTEM(SYS_swapon)
diff --git a/mach/sun2/libsys/symlink.s b/mach/sun2/libsys/symlink.s
new file mode 100644 (file)
index 0000000..b7e9372
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _symlink
+_symlink: SYSTEM(SYS_symlink)
diff --git a/mach/sun2/libsys/sync.s b/mach/sun2/libsys/sync.s
new file mode 100644 (file)
index 0000000..24cf538
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _sync
+_sync: SYSTEM(SYS_sync)
diff --git a/mach/sun2/libsys/syscall.h b/mach/sun2/libsys/syscall.h
new file mode 100644 (file)
index 0000000..9416375
--- /dev/null
@@ -0,0 +1,127 @@
+#define SYSTEM(sys) pea sys; trap #0; bcs 1f; rts; 1: jmp cerror
+#define SYS_exit 1
+#define SYS_fork 2
+#define SYS_read 3
+#define SYS_write 4
+#define SYS_open 5
+#define SYS_close 6
+#define SYS_creat 8
+#define SYS_link 9
+#define SYS_unlink 10
+#define SYS_execv 11
+#define SYS_chdir 12
+#define SYS_mknod 14
+#define SYS_chmod 15
+#define SYS_chown 16
+#define SYS_lseek 19
+#define SYS_getpid 20
+#define SYS_getuid 24
+#define SYS_ptrace 26
+#define SYS_access 33
+#define SYS_sync 36
+#define SYS_kill 37
+#define SYS_stat 38
+#define SYS_lstat 40
+#define SYS_dup 41
+#define SYS_pipe 42
+#define SYS_profil 44
+#define SYS_getgid 47
+#define SYS_acct 51
+#define SYS_ioctl 54
+#define SYS_reboot 55
+#define SYS_symlink 57
+#define SYS_readlink 58
+#define SYS_execve 59
+#define SYS_umask 60
+#define SYS_chroot 61
+#define SYS_fstat 62
+#define SYS_getpagesize 64
+#define SYS_mremap 65
+#define SYS_vfork 66
+#define SYS_sbrk 69
+#define SYS_sstk 70
+#define SYS_mmap 71
+#define SYS_vadvise 72
+#define SYS_munmap 73
+#define SYS_mprotect 74
+#define SYS_madvise 75
+#define SYS_vhangup 76
+#define SYS_mincore 78
+#define SYS_getgroups 79
+#define SYS_setgroups 80
+#define SYS_getpgrp 81
+#define SYS_setpgrp 82
+#define SYS_setitimer 83
+#define SYS_wait 84
+#define SYS_swapon 85
+#define SYS_getitimer 86
+#define SYS_gethostname 87
+#define SYS_sethostname 88
+#define SYS_getdtablesize 89
+#define SYS_dup2 90
+#define SYS_getdopt 91
+#define SYS_fcntl 92
+#define SYS_select 93
+#define SYS_setdopt 94
+#define SYS_fsync 95
+#define SYS_setpriority 96
+#define SYS_socket 97
+#define SYS_connect 98
+#define SYS_accept 99
+#define SYS_getpriority 100
+#define SYS_send 101
+#define SYS_recv 102
+#define SYS_bind 104
+#define SYS_setsockopt 105
+#define SYS_listen 106
+#define SYS_sigvec 108
+#define SYS_sigblock 109
+#define SYS_sigsetmask 110
+#define SYS_sigpause 111
+#define SYS_sigstack 112
+#define SYS_recvmsg 113
+#define SYS_sendmsg 114
+#define SYS_gettimeofday 116
+#define SYS_getrusage 117
+#define SYS_getsockopt 118
+#define SYS_readv 120
+#define SYS_writev 121
+#define SYS_settimeofday 122
+#define SYS_fchown 123
+#define SYS_fchmod 124
+#define SYS_recvfrom 125
+#define SYS_setreuid 126
+#define SYS_setregid 127
+#define SYS_rename 128
+#define SYS_truncate 129
+#define SYS_ftruncate 130
+#define SYS_flock 131
+#define SYS_sendto 133
+#define SYS_shutdown 134
+#define SYS_socketpair 135
+#define SYS_mkdir 136
+#define SYS_rmdir 137
+#define SYS_utimes 138
+#define SYS_adjtime 140
+#define SYS_getpeername 141
+#define SYS_gethostid 142
+#define SYS_getrlimit 144
+#define SYS_setrlimit 145
+#define SYS_killpg 146
+#define SYS_getsockname 150
+#define SYS_nfssvc 155
+#define SYS_getdirentries 156
+#define SYS_statfs 157
+#define SYS_fstatfs 158
+#define SYS_unmount 159
+#define SYS_async_daemon 160
+#define SYS_getfh 161
+#define SYS_getdomainname 162
+#define SYS_setdomainname 163
+#define SYS_quotactl 165
+#define SYS_exportfs 166
+#define SYS_mount 167
+#define SYS_ustat 168
+#define SYS_semsys 169
+#define SYS_msgsys 170
+#define SYS_shmsys 171
diff --git a/mach/sun2/libsys/syscall.s b/mach/sun2/libsys/syscall.s
new file mode 100644 (file)
index 0000000..15481c8
--- /dev/null
@@ -0,0 +1,14 @@
+.sect .text
+.define _syscall
+_syscall:
+       move.l  4(sp),d0
+       move.l  (sp),4(sp)
+       move.l  d0,(sp)
+       trap    #0
+       bcs     1f
+       move.l  (sp),a0
+       jmp     (a0)
+1:
+       move.l  (sp),a0
+       move.l  a0,-(sp)
+       jmp     cerror
diff --git a/mach/sun2/libsys/tell.c b/mach/sun2/libsys/tell.c
new file mode 100644 (file)
index 0000000..49e2a91
--- /dev/null
@@ -0,0 +1,7 @@
+long
+tell(f)
+{
+       long lseek();
+
+       return lseek(f, 0L, 1);
+}
diff --git a/mach/sun2/libsys/time.c b/mach/sun2/libsys/time.c
new file mode 100644 (file)
index 0000000..3dd1eea
--- /dev/null
@@ -0,0 +1,12 @@
+long
+time(loc)
+       long *loc;
+{
+       struct { long l1,l2; } t1;
+
+       if (gettimeofday(&t1, (char *) 0) < 0) {
+               return -1;
+       }
+       if (loc) *loc = t1.l1;
+       return t1.l1;
+}
diff --git a/mach/sun2/libsys/times.c b/mach/sun2/libsys/times.c
new file mode 100644 (file)
index 0000000..4e23d92
--- /dev/null
@@ -0,0 +1,16 @@
+#include <sys/types.h>
+
+#define Xval(xx)       ((xx).l1*60+(xx).l2/(100000/6))
+
+times(bp)
+       struct { time_t l1,l2,l3,l4;} *bp;
+{
+       struct { struct { long l1,l2; }s1,s2; long x[20]; } t;
+       if (getrusage(0,&t) < 0) return -1;
+       bp->l1 = Xval(t.s1);
+       bp->l2 = Xval(t.s2);
+       if (getrusage(-1,&t) < 0) return -1;
+       bp->l3 = Xval(t.s1);
+       bp->l4 = Xval(t.s2);
+       return 0;
+}
diff --git a/mach/sun2/libsys/truncate.s b/mach/sun2/libsys/truncate.s
new file mode 100644 (file)
index 0000000..c929660
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _truncate
+_truncate: SYSTEM(SYS_truncate)
diff --git a/mach/sun2/libsys/ulimit.c b/mach/sun2/libsys/ulimit.c
new file mode 100644 (file)
index 0000000..0e3715b
--- /dev/null
@@ -0,0 +1,26 @@
+#include <errno.h>
+
+ulimit(cmd, newlimit)
+       long newlimit;
+{
+       extern int errno;
+       struct {
+               long soft, hard;
+       } x;
+               
+       switch(cmd) {
+       case 1:
+               if (getrlimit(1, &x) < 0) return -1;
+               return ((x.soft + 511) & ~511) >> 9;
+       case 2:
+               x.soft = x.hard = (newlimit << 9);
+               if (setrlimit(1, &x) < 0) return -1;
+               return x.soft;
+       case 3:
+               if (getrlimit(2, &x) < 0) return -1;
+               return x.soft;
+       default:
+               errno = EINVAL;
+               return -1;
+       }
+}
diff --git a/mach/sun2/libsys/umask.s b/mach/sun2/libsys/umask.s
new file mode 100644 (file)
index 0000000..cf1102e
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _umask
+_umask: SYSTEM(SYS_umask)
diff --git a/mach/sun2/libsys/unlink.s b/mach/sun2/libsys/unlink.s
new file mode 100644 (file)
index 0000000..f250768
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _unlink
+_unlink: SYSTEM(SYS_unlink)
diff --git a/mach/sun2/libsys/unmount.s b/mach/sun2/libsys/unmount.s
new file mode 100644 (file)
index 0000000..4e23bd9
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _unmount
+_unmount: SYSTEM(SYS_unmount)
diff --git a/mach/sun2/libsys/utime.c b/mach/sun2/libsys/utime.c
new file mode 100644 (file)
index 0000000..8c265e1
--- /dev/null
@@ -0,0 +1,13 @@
+#include <sys/types.h>
+
+utime(file, timep)
+       char *file;
+       time_t timep[2];
+{
+       struct { long l1,l2,l3,l4; } x;
+
+       x.l2 = x.l4 = 0;
+       x.l1 = timep[0];
+       x.l3 = timep[1];
+       return utimes(file,&x);
+}
diff --git a/mach/sun2/libsys/utimes.s b/mach/sun2/libsys/utimes.s
new file mode 100644 (file)
index 0000000..4cfa34c
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _utimes
+_utimes: SYSTEM(SYS_utimes)
diff --git a/mach/sun2/libsys/vadvise.s b/mach/sun2/libsys/vadvise.s
new file mode 100644 (file)
index 0000000..b21b4d6
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _vadvise
+_vadvise: SYSTEM(SYS_vadvise)
diff --git a/mach/sun2/libsys/vfork.s b/mach/sun2/libsys/vfork.s
new file mode 100644 (file)
index 0000000..8acd391
--- /dev/null
@@ -0,0 +1,18 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _vfork
+_vfork:
+       move.l  (sp)+,a0
+       pea     SYS_vfork
+       trap    #0
+       bcs     1f
+       tst.l   d1
+       bne     2f
+       jmp     (a0)
+1:
+       move.l  d0,_errno
+       move.l  #-1,d0
+       jmp     (a0)
+2:
+       clr.l   d0
+       jmp     (a0)
diff --git a/mach/sun2/libsys/vhangup.s b/mach/sun2/libsys/vhangup.s
new file mode 100644 (file)
index 0000000..d322320
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _vhangup
+_vhangup: SYSTEM(SYS_vhangup)
diff --git a/mach/sun2/libsys/wait.s b/mach/sun2/libsys/wait.s
new file mode 100644 (file)
index 0000000..fa2b598
--- /dev/null
@@ -0,0 +1,15 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _wait
+_wait: 
+       pea     SYS_wait
+       trap    #0
+       bcs     1f
+       tst.l   4(sp)
+       beq     2f
+       move.l  4(sp),a0
+       move.l  d1,(a0)
+2:
+       rts
+1:
+       jmp     cerror
diff --git a/mach/sun2/libsys/wait3.s b/mach/sun2/libsys/wait3.s
new file mode 100644 (file)
index 0000000..daa62a4
--- /dev/null
@@ -0,0 +1,18 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _wait3
+_wait3:
+       move.l  8(sp),d0
+       move.l  12(sp),d1
+       pea     SYS_wait
+       or.b    #0x1f,ccr
+       trap    #0
+       bcc     1f
+       jmp     cerror
+1:
+       tst.l   4(sp)
+       beq     1f
+       move.l  4(sp),a0
+       move.l  d1,(a0)
+1:
+       rts
diff --git a/mach/sun2/libsys/write.s b/mach/sun2/libsys/write.s
new file mode 100644 (file)
index 0000000..3ace177
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _write
+_write: SYSTEM(SYS_write)
diff --git a/mach/sun2/libsys/writev.s b/mach/sun2/libsys/writev.s
new file mode 100644 (file)
index 0000000..89f4f52
--- /dev/null
@@ -0,0 +1,4 @@
+#include "syscall.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define _writev
+_writev: SYSTEM(SYS_writev)