about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rwxr-xr-xconfigure2
-rw-r--r--configure.in2
-rw-r--r--sysdeps/unix/bsd/osf/=dirstream.h44
-rw-r--r--sysdeps/unix/bsd/osf/Implies2
-rw-r--r--sysdeps/unix/bsd/osf/Makefile3
-rw-r--r--sysdeps/unix/bsd/osf/alpha/brk.S53
-rw-r--r--sysdeps/unix/bsd/osf/alpha/fork.S25
-rw-r--r--sysdeps/unix/bsd/osf/alpha/getdents.S25
-rw-r--r--sysdeps/unix/bsd/osf/alpha/killpg.S25
-rw-r--r--sysdeps/unix/bsd/osf/alpha/pipe.S30
-rw-r--r--sysdeps/unix/bsd/osf/alpha/recv.S25
-rw-r--r--sysdeps/unix/bsd/osf/alpha/send.S25
-rw-r--r--sysdeps/unix/bsd/osf/alpha/sigblock.S27
-rw-r--r--sysdeps/unix/bsd/osf/alpha/sigpause.S27
-rw-r--r--sysdeps/unix/bsd/osf/alpha/sigsetmask.S27
-rw-r--r--sysdeps/unix/bsd/osf/alpha/sigvec.S27
-rw-r--r--sysdeps/unix/bsd/osf/alpha/start.S65
-rw-r--r--sysdeps/unix/bsd/osf/alpha/statbuf.h75
-rw-r--r--sysdeps/unix/bsd/osf/alpha/sysdep.S40
-rw-r--r--sysdeps/unix/bsd/osf/alpha/sysdep.h73
-rw-r--r--sysdeps/unix/bsd/osf/alpha/vhangup.S25
-rw-r--r--sysdeps/unix/bsd/osf/alpha/wait4.S1
-rw-r--r--sysdeps/unix/bsd/osf/alpha/waitpid.c1
-rw-r--r--sysdeps/unix/bsd/osf/msync.S1
-rw-r--r--sysdeps/unix/bsd/osf/sigaction.h45
-rw-r--r--sysdeps/unix/bsd/osf/sys/mman.h113
-rw-r--r--sysdeps/unix/bsd/osf/system.c2
28 files changed, 814 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index cf965b4a57..742aff253d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Thu Mar  9 17:16:53 1995  Brendan Kehoe  (brendan@zen.org)
+
+	* configure.in: Match `osf*', not `osf1*'.
+	* configure: Likewise.
+	* sysdeps/unix/bsd/osf: Renamed to `sysdeps/unix/bsd/osf1'.
+
 Wed Mar  8 13:38:13 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
 	* posix/glob/configure.bat: Fixes from DJ.
diff --git a/configure b/configure
index 9a36433099..5c1acaa02f 100755
--- a/configure
+++ b/configure
@@ -568,7 +568,7 @@ gnu*)
   base_os=mach/hurd ;;
 netbsd* | 386bsd*)
   base_os=unix/bsd/bsd4.4 ;;
-osf1* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
+osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
   base_os=unix/bsd ;;
 linux* | sysv* | isc* | esix* | sco* | minix* | irix4*)
   base_os=unix/sysv ;;
diff --git a/configure.in b/configure.in
index 4d03b808cd..bd4a1e7172 100644
--- a/configure.in
+++ b/configure.in
@@ -80,7 +80,7 @@ gnu*)
   base_os=mach/hurd ;;
 netbsd* | 386bsd*)
   base_os=unix/bsd/bsd4.4 ;;
-osf1* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
+osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
   base_os=unix/bsd ;;
 linux* | sysv* | isc* | esix* | sco* | minix* | irix4*)
   base_os=unix/sysv ;;
diff --git a/sysdeps/unix/bsd/osf/=dirstream.h b/sysdeps/unix/bsd/osf/=dirstream.h
new file mode 100644
index 0000000000..c37610e258
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/=dirstream.h
@@ -0,0 +1,44 @@
+/* Copyright (C) 1993 Free Software Foundation, Inc.
+   Contributed by Brendan Kehoe (brendan@zen.org).
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#ifndef	_DIRSTREAM_H
+
+#define	_DIRSTREAM_H	1
+
+#define __need_size_t
+#include <stddef.h>
+
+/* Directory stream type.  */
+
+typedef struct
+  {
+    int __fd;			/* File descriptor.  */
+
+    size_t __offset;		/* Current offset into the block.  */
+    size_t __size;		/* Total valid data in the block.  */
+    char *__data;		/* Directory block.  */
+
+    int __allocation;		/* Space allocated for the block.  */
+
+    int __data_len;		/* Size of __data.  */
+    long __dd_seek;		/* OSF/1 magic cookie returned by getdents. */
+    void *dd_lock;		/* Used by OSF/1 for inter-thread locking.  */
+    
+  } DIR;
+
+#endif	/* dirstream.h */
diff --git a/sysdeps/unix/bsd/osf/Implies b/sysdeps/unix/bsd/osf/Implies
new file mode 100644
index 0000000000..82719f5a5d
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/Implies
@@ -0,0 +1,2 @@
+# OSF/1 has the canonical set of <sys/mman.h> system calls.
+unix/mman
diff --git a/sysdeps/unix/bsd/osf/Makefile b/sysdeps/unix/bsd/osf/Makefile
new file mode 100644
index 0000000000..743788a41a
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/Makefile
@@ -0,0 +1,3 @@
+# Without -non_shared (via the compiler's -static flag), we'll end up
+# with some unresolved symbols wrt exceptions.
+LDFLAGS := $(LDFLAGS) -static
diff --git a/sysdeps/unix/bsd/osf/alpha/brk.S b/sysdeps/unix/bsd/osf/alpha/brk.S
new file mode 100644
index 0000000000..111f3397af
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/brk.S
@@ -0,0 +1,53 @@
+/* Copyright (C) 1993, 1995 Free Software Foundation, Inc.
+   Contributed by Brendan Kehoe (brendan@zen.org).
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+#ifndef SYS_brk
+#define SYS_brk 17
+#endif
+
+#ifndef       HAVE_GNU_LD
+#define __end           end
+#endif
+
+.data
+	.extern __end,8
+	.globl __curbrk
+__curbrk:
+	.quad __end
+
+.text
+ENTRY(__brk)
+	! FIXME We do not check for asking for less than a page yet.
+	ldiq v0, SYS_brk
+	call_pal PAL_callsys
+	bne a3, error
+
+	/* Update __curbrk and exit cleanly.  */
+!	ldgp gp, 0(t12)
+	stl a0, __curbrk
+
+	mov zero, v0
+	ret
+	/* What a horrible way to die.  */
+error:	ldgp gp,0(gp)
+	jmp zero,syscall_error
+	.end __brk
+
+weak_alias (__brk, brk)
diff --git a/sysdeps/unix/bsd/osf/alpha/fork.S b/sysdeps/unix/bsd/osf/alpha/fork.S
new file mode 100644
index 0000000000..7c8d671893
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/fork.S
@@ -0,0 +1,25 @@
+/* Copyright (C) 1993, 1995 Free Software Foundation, Inc.
+   Contributed by Brendan Kehoe (brendan@zen.org).
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+SYSCALL__ (fork, 0)
+	cmovne a4, 0, v0
+	ret
+
+weak_alias (__fork, fork)
diff --git a/sysdeps/unix/bsd/osf/alpha/getdents.S b/sysdeps/unix/bsd/osf/alpha/getdents.S
new file mode 100644
index 0000000000..16ccbc2ce2
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/getdents.S
@@ -0,0 +1,25 @@
+/* Copyright (C) 1993, 1995 Free Software Foundation, Inc.
+   Contributed by Brendan Kehoe (brendan@zen.org).
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+SYSCALL__ (getdirentries, 4)
+	ret
+
+weak_alias (__getdirentries, getdirentries)
+
diff --git a/sysdeps/unix/bsd/osf/alpha/killpg.S b/sysdeps/unix/bsd/osf/alpha/killpg.S
new file mode 100644
index 0000000000..f0b82b3d1a
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/killpg.S
@@ -0,0 +1,25 @@
+/* Copyright (C) 1993 Free Software Foundation, Inc.
+   Contributed by Brendan Kehoe (brendan@zen.org).
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+#include <sys/ult_syscall.h>
+#define SYS_killpg SYS_ult_killpg
+
+SYSCALL (killpg, 2)
+	ret
diff --git a/sysdeps/unix/bsd/osf/alpha/pipe.S b/sysdeps/unix/bsd/osf/alpha/pipe.S
new file mode 100644
index 0000000000..6b074eda1a
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/pipe.S
@@ -0,0 +1,30 @@
+/* Copyright (C) 1993, 1995 Free Software Foundation, Inc.
+   Contributed by Brendan Kehoe (brendan@zen.org).
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+SYSCALL__ (pipe, 1)
+	/* Plop in the two descriptors.  */
+	stl r0, 0(a0)
+	stl r1, 4(a0)
+
+	/* Go out with a clean status.  */
+	mov zero, r0
+	ret
+
+weak_alias (__pipe, pipe)
diff --git a/sysdeps/unix/bsd/osf/alpha/recv.S b/sysdeps/unix/bsd/osf/alpha/recv.S
new file mode 100644
index 0000000000..4ac00eb44e
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/recv.S
@@ -0,0 +1,25 @@
+/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+#include <sys/ult_syscall.h>
+#define SYS_recv SYS_ult_recv
+
+SYSCALL (recv, 4)
+	ret
diff --git a/sysdeps/unix/bsd/osf/alpha/send.S b/sysdeps/unix/bsd/osf/alpha/send.S
new file mode 100644
index 0000000000..ca46894a25
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/send.S
@@ -0,0 +1,25 @@
+/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+#include <sys/ult_syscall.h>
+#define SYS_send SYS_ult_send
+
+SYSCALL (send, 4)
+	ret
diff --git a/sysdeps/unix/bsd/osf/alpha/sigblock.S b/sysdeps/unix/bsd/osf/alpha/sigblock.S
new file mode 100644
index 0000000000..c3556a915f
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/sigblock.S
@@ -0,0 +1,27 @@
+/* Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+   Contributed by Brendan Kehoe (brendan@zen.org).
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+#include <sys/ult_syscall.h>
+#define SYS_sigblock SYS_ult_sigblock
+
+SYSCALL__ (sigblock, 1)
+	ret
+
+weak_alias (__sigblock, sigblock)
diff --git a/sysdeps/unix/bsd/osf/alpha/sigpause.S b/sysdeps/unix/bsd/osf/alpha/sigpause.S
new file mode 100644
index 0000000000..04b6d45db7
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/sigpause.S
@@ -0,0 +1,27 @@
+/* Copyright (C) 1993, 1995 Free Software Foundation, Inc.
+   Contributed by Brendan Kehoe (brendan@zen.org).
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+#include <sys/ult_syscall.h>
+#define SYS_sigpause SYS_ult_sigpause
+
+SYSCALL__ (sigpause, 1)
+	ret
+
+weak_alias (__sigpause, sigpause)
diff --git a/sysdeps/unix/bsd/osf/alpha/sigsetmask.S b/sysdeps/unix/bsd/osf/alpha/sigsetmask.S
new file mode 100644
index 0000000000..fb3a1d19f7
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/sigsetmask.S
@@ -0,0 +1,27 @@
+/* Copyright (C) 1993, 1995 Free Software Foundation, Inc.
+   Contributed by Brendan Kehoe (brendan@zen.org).
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+#include <sys/ult_syscall.h>
+#define SYS_sigsetmask SYS_ult_sigsetmask
+
+SYSCALL__ (sigsetmask, 1)
+	ret
+
+weak_alias (__sigsetmask, sigsetmask)
diff --git a/sysdeps/unix/bsd/osf/alpha/sigvec.S b/sysdeps/unix/bsd/osf/alpha/sigvec.S
new file mode 100644
index 0000000000..b04ec6e12e
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/sigvec.S
@@ -0,0 +1,27 @@
+/* Copyright (C) 1993, 1995 Free Software Foundation, Inc.
+   Contributed by Brendan Kehoe (brendan@zen.org).
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+#include <sys/ult_syscall.h>
+#define SYS_sigvec SYS_ult_sigvec
+
+SYSCALL__ (sigvec, 3)
+	ret
+
+weak_alias (__sigvec, sigvec)
diff --git a/sysdeps/unix/bsd/osf/alpha/start.S b/sysdeps/unix/bsd/osf/alpha/start.S
new file mode 100644
index 0000000000..52eb03667f
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/start.S
@@ -0,0 +1,65 @@
+/* Copyright (C) 1993, 1995 Free Software Foundation, Inc.
+   Contributed by Brendan Kehoe (brendan@zen.org).
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+.comm errno,		4
+
+!.sdata
+!.globl STARTFRM
+!STARTFRM = 0
+
+.text
+ENTRY(__start)
+	lda	sp, -16(sp)
+	stq	zero, 8(sp)
+
+	! This branch puts the address of the current insn in t0.
+	br	t0, 10f
+10:
+	! We set the GP register by using the address of the ldgp
+	! (what we just put into t0).
+	ldgp	gp, 0(t0)
+
+	! get argc
+	ldl	a0, 16(sp)
+
+	! get argv
+	lda	a1, 24(sp)
+
+	! move ahead to envp
+	s8addq	a0, a1, a2
+	addq	a2, 0x8, a2
+
+	! Store in environ.
+	stq	a2, environ
+
+	! Clear out errno.
+!	ldgp	gp, 0(t12)
+	stl	zero, errno
+
+	! Call main.
+	jsr	ra, main
+	ldgp	gp, 0(ra)
+
+	mov	v0, a0
+
+	jsr	ra, exit
+	ldgp	gp, 0(ra)
+
+	.end __start
diff --git a/sysdeps/unix/bsd/osf/alpha/statbuf.h b/sysdeps/unix/bsd/osf/alpha/statbuf.h
new file mode 100644
index 0000000000..9cadfaefd3
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/statbuf.h
@@ -0,0 +1,75 @@
+/* Copyright (C) 1993 Free Software Foundation, Inc.
+   Contributed by Brendan Kehoe (brendan@zen.org).
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#ifndef	_STATBUF_H
+#define	_STATBUF_H
+
+#include <gnu/types.h>
+
+/* Structure describing file characteristics.  */
+struct stat
+  {
+    int st_dev;			/* Device.  */
+    unsigned int st_ino;	/* File serial number.		*/
+    unsigned int st_mode;	/* File mode.  */
+    unsigned short st_nlink;	/* Link count.  */
+    unsigned int st_uid;	/* User ID of the file's owner.	*/
+    unsigned int st_gid;	/* Group ID of the file's group.*/
+    int st_rdev;		/* Device number, if device.  */
+
+    long st_size;		/* Size of file, in bytes.  */
+
+    int st_atime;		/* Time of last access.  */
+    int st_atime_usec;
+    int st_mtime;		/* Time of last modification.  */
+    int st_mtime_usec;
+    int st_ctime;		/* Time of last status change.  */
+    int st_ctime_usec;
+
+    unsigned int st_blksize;	/* Optimal block size for I/O.  */
+#define	_STATBUF_ST_BLKSIZE	/* Tell code we have this member.  */
+
+    int st_blocks;		/* Number of 512-byte blocks allocated.  */
+    unsigned int st_flags;
+    unsigned int st_gen;
+  };
+
+/* Encoding of the file mode.  */
+
+#define	__S_IFMT	0170000	/* These bits determine file type.  */
+
+/* File types.  */
+#define	__S_IFDIR	0040000	/* Directory.  */
+#define	__S_IFCHR	0020000	/* Character device.  */
+#define	__S_IFBLK	0060000	/* Block device.  */
+#define	__S_IFREG	0100000	/* Regular file.  */
+#define	__S_IFIFO	0010000	/* FIFO.  */
+
+#define	__S_IFLNK	0120000	/* Symbolic link.  */
+#define	__S_IFSOCK	0140000	/* Socket.  */
+
+/* Protection bits.  */
+
+#define	__S_ISUID	04000	/* Set user ID on execution.  */
+#define	__S_ISGID	02000	/* Set group ID on execution.  */
+#define	__S_ISVTX	01000	/* Save swapped text after use (sticky).  */
+#define	__S_IREAD	0400	/* Read by owner.  */
+#define	__S_IWRITE	0200	/* Write by owner.  */
+#define	__S_IEXEC	0100	/* Execute by owner.  */
+
+#endif	/* statbuf.h */
diff --git a/sysdeps/unix/bsd/osf/alpha/sysdep.S b/sysdeps/unix/bsd/osf/alpha/sysdep.S
new file mode 100644
index 0000000000..bc4865cef2
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/sysdep.S
@@ -0,0 +1,40 @@
+/* Copyright (C) 1993 Free Software Foundation, Inc.
+   Contributed by Brendan Kehoe (brendan@zen.org).
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+#define _ERRNO_H
+#include <errnos.h>
+
+ENTRY(syscall_error)
+#ifdef EWOULDBLOCK_sys
+	/* We translate the system's EWOULDBLOCK error into EAGAIN.
+	   The GNU C library always defines EWOULDBLOCK==EAGAIN.
+	   EWOULDBLOCK_sys is the original number.  */
+	subq v0, EWOULDBLOCK_sys, t0
+	cmoveq t0, EAGAIN, v0
+#endif
+
+	/* Store it in errno... */
+!	ldgp gp, 0(t12)
+	stl v0, errno
+
+	/* And just kick back a -1.  */
+	ldil v0, -1
+	ret
+
+	.end syscall_error
diff --git a/sysdeps/unix/bsd/osf/alpha/sysdep.h b/sysdeps/unix/bsd/osf/alpha/sysdep.h
new file mode 100644
index 0000000000..3669a69b9b
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/sysdep.h
@@ -0,0 +1,73 @@
+/* Copyright (C) 1993, 1995 Free Software Foundation, Inc.
+   Contributed by Brendan Kehoe (brendan@zen.org).
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdeps/unix/sysdep.h>
+
+#ifdef	ASSEMBLER
+
+#include <machine/pal.h>		/* get PAL_callsys */
+#include <regdef.h>
+
+#ifdef __STDC__
+#define ENTRY(name) \
+  .globl name;								      \
+  .ent name,0;								      \
+  name##:;								      \
+  .frame sp,0,ra
+#else
+#define ENTRY(name) \
+  .globl name;								      \
+  .ent name,0;								      \
+  name/**/:;								      \
+  .frame sp,0,ra
+#endif
+
+#ifdef __STDC__
+#define PSEUDO(name, syscall_name, args) \
+  ENTRY(name);								      \
+  ldiq v0, SYS_##syscall_name;						      \
+  .set noat;							    	      \
+  call_pal PAL_callsys;							      \
+  .set at;							    	      \
+  beq a3, 10f;								      \
+  br gp, 20f;								      \
+20:;									      \
+  ldgp gp, 0(gp);							      \
+  jmp zero, syscall_error;						      \
+10:
+#else
+#define PSEUDO(name, syscall_name, args) \
+  ENTRY(name);								      \
+  ldiq v0, SYS_/**/syscall_name;					      \
+  .set noat;							    	      \
+  call_pal PAL_callsys;							      \
+  .set at;							    	      \
+  beq a3, 10f;								      \
+  br gp, 20f;								      \
+20:;									      \
+  ldgp gp, 0(gp);							      \
+  jmp zero, syscall_error;						      \
+10:
+#endif
+
+#define ret		ret zero,(ra),1
+#define r0		v0
+#define r1		a4
+#define MOVE(x,y)	mov x, y
+
+#endif	/* ASSEMBLER */
diff --git a/sysdeps/unix/bsd/osf/alpha/vhangup.S b/sysdeps/unix/bsd/osf/alpha/vhangup.S
new file mode 100644
index 0000000000..d4d2b1c485
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/vhangup.S
@@ -0,0 +1,25 @@
+/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+#include <sys/ult_syscall.h>
+#define SYS_vhangup SYS_ult_vhangup
+
+SYSCALL (vhangup, 1)
+	ret
diff --git a/sysdeps/unix/bsd/osf/alpha/wait4.S b/sysdeps/unix/bsd/osf/alpha/wait4.S
new file mode 100644
index 0000000000..e4c322341d
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/wait4.S
@@ -0,0 +1 @@
+#include <sysdeps/unix/bsd/bsd4.4/wait4.S>
diff --git a/sysdeps/unix/bsd/osf/alpha/waitpid.c b/sysdeps/unix/bsd/osf/alpha/waitpid.c
new file mode 100644
index 0000000000..8378982ac7
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/waitpid.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/bsd/bsd4.4/waitpid.c>
diff --git a/sysdeps/unix/bsd/osf/msync.S b/sysdeps/unix/bsd/osf/msync.S
new file mode 100644
index 0000000000..75b9f1531d
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/msync.S
@@ -0,0 +1 @@
+#include <sysdeps/unix/bsd/sun/sunos4/msync.S>
diff --git a/sysdeps/unix/bsd/osf/sigaction.h b/sysdeps/unix/bsd/osf/sigaction.h
new file mode 100644
index 0000000000..8a4e2c5b84
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/sigaction.h
@@ -0,0 +1,45 @@
+/* Structure and constand definitions for sigaction et al.  OSF/1 version.
+   Copyright (C) 1993 Free Software Foundation, Inc.
+   Contributed by Brendan Kehoe (brendan@zen.org).
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+/* Structure describing the action to be taken when a signal arrives.  */
+struct sigaction
+  {
+    /* Signal handler.  */
+    __sighandler_t sa_handler;
+
+    /* Additional set of signals to be blocked.  */
+    __sigset_t sa_mask;
+
+    /* Special flags.  */
+    int sa_flags;
+  };
+
+/* Bits in `sa_flags'.  */
+#ifdef	__USE_BSD
+#define	SA_ONSTACK	0x1	/* Take signal on signal stack.  */
+#define	SA_RESTART	0x2	/* Don't restart syscall on signal return.  */
+#define	SA_DISABLE	0x4	/* Disable alternate signal stack.  */
+#endif
+#define	SA_NOCLDSTOP	0x4	/* Don't send SIGCHLD when children stop.  */
+
+
+/* Values for the HOW argument to `sigprocmask'.  */
+#define	SIG_BLOCK	1	/* Block signals.  */
+#define	SIG_UNBLOCK	2	/* Unblock signals.  */
+#define	SIG_SETMASK	3	/* Set the set of blocked signals.  */
diff --git a/sysdeps/unix/bsd/osf/sys/mman.h b/sysdeps/unix/bsd/osf/sys/mman.h
new file mode 100644
index 0000000000..397ad28535
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/sys/mman.h
@@ -0,0 +1,113 @@
+/* Definitions for BSD-style memory management.  OSF/1 version.
+Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#ifndef	_SYS_MMAN_H
+
+#define	_SYS_MMAN_H	1
+#include <features.h>
+
+#include <gnu/types.h>
+#define __need_size_t
+#include <stddef.h>
+
+
+/* Protections are chosen from these bits, OR'd together.  The
+   implementation does not necessarily support PROT_EXEC or PROT_WRITE
+   without PROT_READ.  The only guarantees are that no writing will be
+   allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
+
+#define	PROT_NONE	0x00	/* No access.  */
+#define	PROT_READ	0x01	/* Pages can be read.  */
+#define	PROT_WRITE	0x02	/* Pages can be written.  */
+#define	PROT_EXEC	0x04	/* Pages can be executed.  */
+
+
+/* Flags contain mapping type, sharing type and options.  */
+
+/* Mapping type (must choose one and only one of these).  */
+#define	MAP_FILE	0x00	/* Mapped from a file or device.  */
+#define	MAP_ANON	0x10	/* Allocated from anonymous virtual memory.  */
+#define	MAP_ANONYMOUS	MAP_ANON
+#define	MAP_TYPE	0xf0	/* Mask for type field.  */
+
+/* Sharing types (must choose one and only one of these).  */
+#define	MAP_SHARED	0x01	/* Share changes.  */
+#define	MAP_PRIVATE	0x02	/* Changes private; copy pages on write.  */
+
+/* Other flags.  */
+#define	MAP_FIXED	0x0100	/* Map address must be exactly as requested. */
+#define	MAP_VARIABLE	0	/* Absence of MAP_FIXED.  */
+#define	MAP_HASSEMPHORE	0x0200	/* Region may contain semaphores.  */
+#define	MAP_INHERIT	0x0400	/* Region is retained after exec.  */
+#define	MAP_UNALIGNED	0x0800	/* File offset need not be page-aligned.  */
+
+/* Advice to `madvise'.  */
+#define	MADV_NORMAL	0	/* No further special treatment.  */
+#define	MADV_RANDOM	1	/* Expect random page references.  */
+#define	MADV_SEQUENTIAL	2	/* Expect sequential page references.  */
+#define	MADV_WILLNEED	3	/* Will need these pages.  */
+#define	MADV_DONTNEED	4	/* Don't need these pages.  */
+#define	MADV_SPACEAVAIL	5	/* Ensure that resources are available.  */
+
+/* Flags to `msync'.  */
+#define MS_ASYNC	1		/* Asynchronous cache flush.  */
+#define MS_SYNC		3		/* Synchronous cache flush.  */
+#define MS_INVALIDATE	4		/* Invalidate cached pages.  */
+
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+/* Map addresses starting near ADDR and extending for LEN bytes.  from
+   OFFSET into the file FD describes according to PROT and FLAGS.  If ADDR
+   is nonzero, it is the desired mapping address.  If the MAP_FIXED bit is
+   set in FLAGS, the mapping will be at ADDR exactly (which must be
+   page-aligned); otherwise the system chooses a convenient nearby address.
+   The return value is the actual mapping address chosen or (caddr_t) -1
+   for errors (in which case `errno' is set).  A successful `mmap' call
+   deallocates any previous mapping for the affected region.  */
+
+__caddr_t __mmap __P ((__caddr_t __addr, size_t __len,
+		       int __prot, int __flags, int __fd, off_t __offset));
+__caddr_t mmap __P ((__caddr_t __addr, size_t __len,
+		     int __prot, int __flags, int __fd, off_t __offset));
+
+/* Deallocate any mapping for the region starting at ADDR and extending LEN
+   bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */
+int __munmap __P ((__caddr_t __addr, size_t __len));
+int munmap __P ((__caddr_t __addr, size_t __len));
+
+/* Change the memory protection of the region starting at ADDR and
+   extending LEN bytes to PROT.  Returns 0 if successful, -1 for errors
+   (and sets errno).  */
+int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
+
+/* Synchronize the region starting at ADDR and extending LEN bytes with the
+   file it maps.  Filesystem operations on a file being mapped are
+   unpredictable before this is done.  */
+int msync __P ((__caddr_t __addr, size_t __len, int __flags));
+
+/* Advise the system about particular usage patterns the program follows
+   for the region starting at ADDR and extending LEN bytes.  */
+int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
+
+__END_DECLS
+
+
+#endif	/* sys/mman.h */
diff --git a/sysdeps/unix/bsd/osf/system.c b/sysdeps/unix/bsd/osf/system.c
new file mode 100644
index 0000000000..ef42ea2155
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/system.c
@@ -0,0 +1,2 @@
+/* OSF/1 does have `waitpid'.  Avoid unix/system.c, which says we don't.  */
+#include <sysdeps/posix/system.c>