aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1996-06-16 03:49:40 +0000
committerRoland McGrath <roland@gnu.org>1996-06-16 03:49:40 +0000
commit5fbef188648f5150617e0a14f1011e600f1b3a0f (patch)
tree81334ea044e87bc2cf489cc8cb49adab73b9d6dd
parentf9496a7b54c27580d4b30cc2b2b40e86738b2b81 (diff)
downloadglibc-5fbef188648f5150617e0a14f1011e600f1b3a0f.zip
glibc-5fbef188648f5150617e0a14f1011e600f1b3a0f.tar.gz
glibc-5fbef188648f5150617e0a14f1011e600f1b3a0f.tar.bz2
* hurd/Makefile (routines): Add get-host, set-host.
(distribute): Add hurdhost.h. * hurd/hurdhost.h: New file. * sysdeps/mach/hurd/gethostname.c: Use _hurd_get_host_config. * sysdeps/mach/hurd/gethostid.c: Likewise. * sysdeps/mach/hurd/sethostname.c: Use _hurd_set_host_config. * sysdeps/mach/hurd/sethostid.c: Likewise. * hurd/get-host.c: New file. * hurd/set-host.c: New file. * math/Makefile (headers): Add fpu_control.h. (aux): New variable, list fpu_control and setfpucw. * sysdeps/generic/fpu_control.c: New file. * sysdeps/stub/fpu_control.h: New file. * sysdeps/unix/sysv/linux/m68k/fpu_control.h: Moved to ... * sysdeps/m68k/fpu_control.h: here. * sysdeps/unix/sysv/linux/i386/fpu_control.h: Moved to ... * sysdeps/i386/fpu_control.h: here. * sysdeps/unix/sysv/linux/alpha/fpu_control.h: Moved to ... * sysdeps/alpha/fpu/fpu_control.h: here. Fixed copyright. * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Remove setfpucw, fpu_control. * sysdeps/unix/sysv/linux/alpha/fpu_control.c: File removed. * sysdeps/unix/sysv/linux/setfpucw.c: Moved to ... * sysdeps/generic/setfpucw.c: here. (__fpu_control): Variable removed. (__setfpucw): Use SET even if zero.
-rw-r--r--ChangeLog28
-rw-r--r--hurd/Makefile4
-rw-r--r--hurd/get-host.c57
-rw-r--r--hurd/hurdhost.h28
-rw-r--r--hurd/set-host.c48
-rw-r--r--math/Makefile4
-rw-r--r--sysdeps/alpha/fpu/fpu_control.h (renamed from sysdeps/unix/sysv/linux/alpha/fpu_control.h)24
-rw-r--r--sysdeps/generic/fpu_control.c (renamed from sysdeps/unix/sysv/linux/alpha/fpu_control.c)7
-rw-r--r--sysdeps/generic/setfpucw.c (renamed from sysdeps/unix/sysv/linux/setfpucw.c)6
-rw-r--r--sysdeps/i386/fpu_control.h (renamed from sysdeps/unix/sysv/linux/i386/fpu_control.h)3
-rw-r--r--sysdeps/m68k/fpu_control.h (renamed from sysdeps/unix/sysv/linux/m68k/fpu_control.h)0
-rw-r--r--sysdeps/mach/hurd/gethostid.c16
-rw-r--r--sysdeps/mach/hurd/gethostname.c23
-rw-r--r--sysdeps/mach/hurd/sethostid.c19
-rw-r--r--sysdeps/mach/hurd/sethostname.c12
-rw-r--r--sysdeps/stub/fpu_control.h46
-rw-r--r--sysdeps/unix/sysv/linux/alpha/Makefile4
17 files changed, 273 insertions, 56 deletions
diff --git a/ChangeLog b/ChangeLog
index 69eb550..5929b2f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,33 @@
Sat Jun 15 18:13:43 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
+ * hurd/Makefile (routines): Add get-host, set-host.
+ (distribute): Add hurdhost.h.
+ * hurd/hurdhost.h: New file.
+ * sysdeps/mach/hurd/gethostname.c: Use _hurd_get_host_config.
+ * sysdeps/mach/hurd/gethostid.c: Likewise.
+ * sysdeps/mach/hurd/sethostname.c: Use _hurd_set_host_config.
+ * sysdeps/mach/hurd/sethostid.c: Likewise.
+ * hurd/get-host.c: New file.
+ * hurd/set-host.c: New file.
+
+ * math/Makefile (headers): Add fpu_control.h.
+ (aux): New variable, list fpu_control and setfpucw.
+ * sysdeps/generic/fpu_control.c: New file.
+ * sysdeps/stub/fpu_control.h: New file.
+ * sysdeps/unix/sysv/linux/m68k/fpu_control.h: Moved to ...
+ * sysdeps/m68k/fpu_control.h: here.
+ * sysdeps/unix/sysv/linux/i386/fpu_control.h: Moved to ...
+ * sysdeps/i386/fpu_control.h: here.
+ * sysdeps/unix/sysv/linux/alpha/fpu_control.h: Moved to ...
+ * sysdeps/alpha/fpu/fpu_control.h: here. Fixed copyright.
+ * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Remove
+ setfpucw, fpu_control.
+ * sysdeps/unix/sysv/linux/alpha/fpu_control.c: File removed.
+ * sysdeps/unix/sysv/linux/setfpucw.c: Moved to ...
+ * sysdeps/generic/setfpucw.c: here.
+ (__fpu_control): Variable removed.
+ (__setfpucw): Use SET even if zero.
+
* elf/dl-deps.c (_dl_map_object_deps): Set MAP's mark bit before loop.
Set mark bits of deps as opened, instead of as scanned.
diff --git a/hurd/Makefile b/hurd/Makefile
index 4f1f22c..1484ad5 100644
--- a/hurd/Makefile
+++ b/hurd/Makefile
@@ -40,6 +40,7 @@ server-interfaces := hurd/msg faultexc
routines = hurdstartup hurdinit \
hurdid hurdlookup hurdpid hurdrlimit hurdprio hurdexec \
+ get-host set-host \
path-lookup \
setauth \
pid2task task2pid \
@@ -57,7 +58,8 @@ sig = hurdsig hurdfault siginfo hurd-raise preempt-sig \
dtable = dtable port2fd new-fd alloc-fd intern-fd \
getdport openport \
fd-close fd-read fd-write hurdioctl ctty-input ctty-output
-distribute = hurdstartup.h hurdfault.h faultexc.defs intr-rpc.defs intr-rpc.h
+distribute = hurdstartup.h hurdfault.h hurdhost.h \
+ faultexc.defs intr-rpc.defs intr-rpc.h
# XXX this is a temporary hack; see hurdmalloc.h
routines += hurdmalloc
diff --git a/hurd/get-host.c b/hurd/get-host.c
new file mode 100644
index 0000000..231ee59
--- /dev/null
+++ b/hurd/get-host.c
@@ -0,0 +1,57 @@
+/* Get a host configuration item kept as the whole contents of a file.
+Copyright (C) 1996 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 <hurd.h>
+#include "hurdhost.h"
+
+ssize_t
+_hurd_get_host_config (const char *item, char *buf, size_t buflen)
+{
+ error_t err;
+ char *data;
+ mach_msg_type_number_t nread, more;
+ file_t config = __file_name_lookup (item, O_RDONLY, 0);
+ if (config == MACH_PORT_NULL)
+ return -1;
+
+ data = buf;
+ err = __io_read (config, &data, &nread, -1, buflen);
+ if (! err)
+ /* Check if there is more in the file we didn't read. */
+ err = __io_readable (config, &more);
+ __mach_port_deallocate (__mach_task_self (), config);
+ if (err)
+ return __hurd_fail (err);
+ if (data != buf)
+ {
+ memcpy (buf, data, nread);
+ __vm_deallocate (__mach_task_self (), (vm_address_t) data, nread);
+ }
+
+ /* Remove newlines in case someone wrote the file by hand. */
+ while (buf[nread - 1] == '\n')
+ buf[--nread] = '\0';
+
+ if (more)
+ /* If we didn't read the whole file, tell the caller to use a bigger
+ buffer next time. */
+ return __hurd_fail (ENAMETOOLONG);
+
+ return nread;
+}
diff --git a/hurd/hurdhost.h b/hurd/hurdhost.h
new file mode 100644
index 0000000..7a826eb
--- /dev/null
+++ b/hurd/hurdhost.h
@@ -0,0 +1,28 @@
+/* Host configuration items kept as the whole contents of a file.
+Copyright (C) 1996 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. */
+
+/* Fetch and atomically store the contents of the file ITEM.
+ Returns the size read or written, or -1 for errors.
+ If BUFLEN is not big enough to contain the whole contents,
+ BUFLEN bytes of BUF are filled in and we fail with ENAMETOOLONG. */
+
+ssize_t _hurd_get_host_config (const char *item,
+ char *buf, size_t buflen);
+ssize_t _hurd_set_host_config (const char *item,
+ const char *value, size_t valuelen);
diff --git a/hurd/set-host.c b/hurd/set-host.c
new file mode 100644
index 0000000..e9af697
--- /dev/null
+++ b/hurd/set-host.c
@@ -0,0 +1,48 @@
+/* Set a host configuration item kept as the whole contents of a file.
+Copyright (C) 1996 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 <hurd.h>
+#include "hurdhost.h"
+
+ssize_t
+_hurd_set_host_config (const char *item, const char *value, size_t valuelen)
+{
+ error_t err;
+ mach_msg_type_number_t nwrote;
+ file_t new, dir;
+
+ dir = __file_name_split (item, &item);
+ if (dir == MACH_PORT_NULL)
+ return -1;
+
+ /* Create a new node. */
+ err = __dir_mkfile (dir, O_CREAT|O_TRUNC, 0600, &new);
+ if (! err)
+ {
+ /* Write the contents. */
+ err = __io_write (new, value, valuelen, 0, &nwrote);
+ if (! err)
+ /* Atomically link the new node onto the name. */
+ err = __dir_link (dir, item, 0);
+ __mach_port_deallocate (__mach_task_self (), new);
+ }
+ __mach_port_deallocate (__mach_task_self (), dir);
+
+ return nread;
+}
diff --git a/math/Makefile b/math/Makefile
index beaa269..6530291 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -21,11 +21,13 @@
subdir := math
# Installed header files.
-headers := math.h mathcalls.h __math.h huge_val.h nan.h
+headers := math.h mathcalls.h __math.h huge_val.h nan.h fpu_control.h
# Internal header files.
distribute := math_private.h machine/asm.h machine/endian.h
+# FPU support code.
+aux := fpu_control setfpucw
# Build the -lm library.
diff --git a/sysdeps/unix/sysv/linux/alpha/fpu_control.h b/sysdeps/alpha/fpu/fpu_control.h
index 782f33e..219ea55 100644
--- a/sysdeps/unix/sysv/linux/alpha/fpu_control.h
+++ b/sysdeps/alpha/fpu/fpu_control.h
@@ -1,15 +1,23 @@
-/* Copyright (C) 1993 Olaf Flebbe
-This file is part of the Linux C Library.
+/* FPU control word bits. Alpha version.
+Copyright (C) 1996 Free Software Foundation, Inc.
+Contributed by Olaf Flebbe.
-The Linux C Library is free software; you can redistribute it and/or
+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 Linux C Library is distributed in the hope that it will be useful,
+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. */
+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 _ALPHA_FPU_CONTROL_H
#define _ALPHA_FPU_CONTROL_H
@@ -28,7 +36,7 @@ Library General Public License for more details. */
* OM: Overflow mask
* UM: Underflow mask
* PM: Precision (inexact result) mask
- *
+ *
* Mask bit is 1 means no interrupt.
*
* PC: Precision control
@@ -51,7 +59,7 @@ Library General Public License for more details. */
#include <features.h>
/* masking of interrupts */
-#define _FPU_MASK_IM 0x01
+#define _FPU_MASK_IM 0x01
#define _FPU_MASK_DM 0x02
#define _FPU_MASK_ZM 0x04
#define _FPU_MASK_OM 0x08
@@ -84,7 +92,7 @@ Library General Public License for more details. */
one can use /d to get round to +infinity with no extra overhead
(so long as the default isn't changed, of course...)
- exceptions on overflow, zero divide and NaN */
-#define _FPU_DEFAULT 0x1f72
+#define _FPU_DEFAULT 0x1f72
/* IEEE: same as above, but exceptions */
#define _FPU_IEEE 0x1f7f
diff --git a/sysdeps/unix/sysv/linux/alpha/fpu_control.c b/sysdeps/generic/fpu_control.c
index 20c032a..4a47e62 100644
--- a/sysdeps/unix/sysv/linux/alpha/fpu_control.c
+++ b/sysdeps/generic/fpu_control.c
@@ -1,5 +1,6 @@
-/* Copyright (C) 1993, 1995 Free Software Foundation, Inc.
- Contributed by David Mosberger (davidm@azstarnet.com).
+/* Default FPU control word initialization.
+Copyright (C) 1996 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
@@ -18,4 +19,6 @@ Cambridge, MA 02139, USA. */
#include <fpu_control.h>
+/* This module defines `__fpu_control' with the default value. */
+
fpu_control_t __fpu_control = _FPU_DEFAULT;
diff --git a/sysdeps/unix/sysv/linux/setfpucw.c b/sysdeps/generic/setfpucw.c
index 47a021c..7b09a68 100644
--- a/sysdeps/unix/sysv/linux/setfpucw.c
+++ b/sysdeps/generic/setfpucw.c
@@ -29,9 +29,5 @@ __setfpucw (fpu_control_t set)
/* Preserve the reserved bits, and set the rest as the user
specified (or the default, if the user gave zero). */
- _FPU_SETCW ((cw & _FPU_RESERVED) | ((set ?: _FPU_DEFAULT) & ~_FPU_RESERVED));
+ _FPU_SETCW ((cw & _FPU_RESERVED) | (set & ~_FPU_RESERVED));
}
-
-/* The startup code in init-first.c calls __setfpucw (__fpu_control). */
-
-fpu_control_t __fpu_control;
diff --git a/sysdeps/unix/sysv/linux/i386/fpu_control.h b/sysdeps/i386/fpu_control.h
index 8c04c1e..d72f474 100644
--- a/sysdeps/unix/sysv/linux/i386/fpu_control.h
+++ b/sysdeps/i386/fpu_control.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993, 1995, 1996 Free Software Foundation, Inc.
+/* FPU control word bits. i387 version.
+Copyright (C) 1993, 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Olaf Flebbe.
diff --git a/sysdeps/unix/sysv/linux/m68k/fpu_control.h b/sysdeps/m68k/fpu_control.h
index 97bde85..97bde85 100644
--- a/sysdeps/unix/sysv/linux/m68k/fpu_control.h
+++ b/sysdeps/m68k/fpu_control.h
diff --git a/sysdeps/mach/hurd/gethostid.c b/sysdeps/mach/hurd/gethostid.c
index 5a33092..a413a50 100644
--- a/sysdeps/mach/hurd/gethostid.c
+++ b/sysdeps/mach/hurd/gethostid.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 93, 94, 96 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
@@ -17,17 +17,19 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <ansidecl.h>
-#include <errno.h>
#include <unistd.h>
#include <hurd.h>
+#include "hurdhost.h"
/* Return the current machine's Internet number. */
long int
DEFUN_VOID(gethostid)
{
- int hostid;
- error_t err;
- if (err = __USEPORT (PROC, __proc_gethostid (port, &hostid)))
- return __hurd_fail (err);
- return hostid;
+ /* The hostid is just the contents of the file /etc/hostid,
+ kept as text of hexadecimal digits. */
+ char buf[8];
+ ssize_t n = _hurd_get_host_config ("/etc/hostid", buf, sizeof buf);
+ if (n < 0)
+ return -1;
+ return strtol (buf, NULL, 16);
}
diff --git a/sysdeps/mach/hurd/gethostname.c b/sysdeps/mach/hurd/gethostname.c
index 94a0537..06703ea 100644
--- a/sysdeps/mach/hurd/gethostname.c
+++ b/sysdeps/mach/hurd/gethostname.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 93, 94, 95, 96 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
@@ -17,11 +17,8 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <ansidecl.h>
-#include <errno.h>
#include <unistd.h>
-#include <hurd.h>
-#include <hurd/port.h>
-#include <string.h>
+#include "hurdhost.h"
/* Put the name of the current host in no more than LEN bytes of NAME.
The result is null-terminated if LEN is large enough for the full
@@ -30,19 +27,9 @@ int
DEFUN(__gethostname, (name, len),
char *name AND size_t len)
{
- error_t err;
- char *buf = name;
- mach_msg_type_number_t buflen = len;
- if (err = __USEPORT (PROC, __proc_gethostname (port, &buf, &buflen)))
- return __hurd_fail (err);
- if (buf != name)
- {
- memcpy (name, buf, len < buflen ? len : buflen);
- __vm_deallocate (__mach_task_self (), (vm_address_t) buf, buflen);
- }
- if (buflen > len)
- return __hurd_fail (ENAMETOOLONG);
- return 0;
+ /* The host name is just the contents of the file /etc/hostname. */
+ ssize_t n = _hurd_get_host_config ("/etc/hostname", name, len);
+ return n < 0 ? -1 : 0;
}
weak_alias (__gethostname, gethostname)
diff --git a/sysdeps/mach/hurd/sethostid.c b/sysdeps/mach/hurd/sethostid.c
index dc8153c..64f5e0c 100644
--- a/sysdeps/mach/hurd/sethostid.c
+++ b/sysdeps/mach/hurd/sethostid.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1996 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
@@ -17,15 +17,26 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <ansidecl.h>
-#include <errno.h>
#include <unistd.h>
#include <hurd.h>
+#include "hurdhost.h"
+#include "../stdio-common/_itoa.h"
/* Set the current machine's Internet number to ID.
This call is restricted to the super-user. */
int
DEFUN(sethostid, (id), long int id)
{
- error_t err = __USEPORT (PROC, __proc_sethostid (port, id));
- return err ? __hurd_fail (err) : 0;
+ char buf[8], *bp;
+ ssize_t n;
+
+ /* The hostid is kept in the file /etc/hostid,
+ eight characters of upper-case hexadecimal. */
+
+ bp = _itoa_word (id, &buf[sizeof buf], 16, 1);
+ while (bp > buf)
+ *--bp = '0';
+
+ n = _hurd_set_host_config ("/etc/hostid", buf, sizeof buf);
+ return n < 0 ? -1 : 0;
}
diff --git a/sysdeps/mach/hurd/sethostname.c b/sysdeps/mach/hurd/sethostname.c
index 2c019cf..d07e69d 100644
--- a/sysdeps/mach/hurd/sethostname.c
+++ b/sysdeps/mach/hurd/sethostname.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 93, 94, 96 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
@@ -17,9 +17,8 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <ansidecl.h>
-#include <errno.h>
#include <unistd.h>
-#include <hurd.h>
+#include "hurdhost.h"
/* Set the name of the current host to NAME, which is LEN bytes long.
This call is restricted to the super-user. */
@@ -27,8 +26,7 @@ int
DEFUN(sethostname, (name, len),
CONST char *name AND size_t len)
{
- error_t err = __USEPORT (PROC, __proc_sethostname (port, name, len));
- if (err)
- return __hurd_fail (err);
- return 0;
+ /* The host name is just the contents of the file /etc/hostname. */
+ ssize_t n = _hurd_set_host_config ("/etc/hostname", name, len);
+ return n < 0 ? -1 : 0;
}
diff --git a/sysdeps/stub/fpu_control.h b/sysdeps/stub/fpu_control.h
new file mode 100644
index 0000000..65f5882
--- /dev/null
+++ b/sysdeps/stub/fpu_control.h
@@ -0,0 +1,46 @@
+/* FPU control word definitions. Stub version.
+Copyright (C) 1996 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 _FPU_CONTROL_H
+#define _FPU_CONTROL_H
+
+#define _FPU_RESERVED ??? /* These bits are reserved are not changed. */
+
+/* The fdlibm code requires no interrupts for exceptions. Don't
+ change the rounding mode, it would break long double I/O! */
+#define _FPU_DEFAULT 0x00000000 /* Default value. */
+
+/* Type of the control word. */
+typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__?I__)));
+
+/* Macros for accessing the hardware control word. */
+#define _FPU_GETCW(cw) __asm__ ("fetch fpu control word into %0" : "=g" (cw))
+#define _FPU_SETCW(cw) __asm__ ("set fpu control word to %0" : : "g" (cw))
+
+/* Default control word set at startup. */
+extern fpu_control_t __fpu_control;
+
+__BEGIN_DECLS
+
+/* Called at startup. It can be used to manipulate fpu control register. */
+extern void __setfpucw __P ((fpu_control_t));
+
+__END_DECLS
+
+#endif /* _M68K_FPU_CONTROL_H */
diff --git a/sysdeps/unix/sysv/linux/alpha/Makefile b/sysdeps/unix/sysv/linux/alpha/Makefile
index e6e421d..9d59671 100644
--- a/sysdeps/unix/sysv/linux/alpha/Makefile
+++ b/sysdeps/unix/sysv/linux/alpha/Makefile
@@ -1,6 +1,6 @@
ifeq ($(subdir), misc)
sysdep_headers += alpha/ptrace.h alpha/regdef.h
-sysdep_routines += ieee_get_fp_control ieee_set_fp_control fpu_control \
- setfpucw sethae ioperm osf_sigprocmask fstatfs statfs
+sysdep_routines += ieee_get_fp_control ieee_set_fp_control \
+ sethae ioperm osf_sigprocmask fstatfs statfs
endif