about summary refs log tree commit diff
path: root/sysdeps
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 /sysdeps
parentf9496a7b54c27580d4b30cc2b2b40e86738b2b81 (diff)
downloadglibc-5fbef188648f5150617e0a14f1011e600f1b3a0f.tar.gz
glibc-5fbef188648f5150617e0a14f1011e600f1b3a0f.tar.xz
glibc-5fbef188648f5150617e0a14f1011e600f1b3a0f.zip
* 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.
Diffstat (limited to 'sysdeps')
-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
11 files changed, 106 insertions, 54 deletions
diff --git a/sysdeps/unix/sysv/linux/alpha/fpu_control.h b/sysdeps/alpha/fpu/fpu_control.h
index 782f33e040..219ea55f24 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 20c032a03c..4a47e626a8 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 47a021c587..7b09a68b55 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 8c04c1ea11..d72f474eb6 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 97bde853bc..97bde853bc 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 5a3309266e..a413a50308 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 94a0537d91..06703ead6a 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 dc8153caa6..64f5e0c1c6 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 2c019cf99e..d07e69d395 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 0000000000..65f58824ae
--- /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 e6e421da9d..9d596719da 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