about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/generic/gccframe.h30
-rw-r--r--sysdeps/gnu/errlist.c2
-rw-r--r--sysdeps/ia64/bits/fenv.h4
-rw-r--r--sysdeps/ia64/fpu/fclrexcpt.c2
-rw-r--r--sysdeps/ia64/fpu/fedisblxcpt.c2
-rw-r--r--sysdeps/ia64/fpu/feenablxcpt.c3
-rw-r--r--sysdeps/ia64/fpu/fesetenv.c4
-rw-r--r--sysdeps/ia64/fpu/fesetround.c4
-rw-r--r--sysdeps/ia64/fpu/fgetexcptflg.c2
-rw-r--r--sysdeps/ia64/fpu/fsetexcptflg.c7
-rw-r--r--sysdeps/ia64/gccframe.h32
11 files changed, 75 insertions, 17 deletions
diff --git a/sysdeps/generic/gccframe.h b/sysdeps/generic/gccframe.h
new file mode 100644
index 0000000000..6ed932017a
--- /dev/null
+++ b/sysdeps/generic/gccframe.h
@@ -0,0 +1,30 @@
+/* Definition of object in frame unwind info.  Generic version.
+   Copyright (C) 2000 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., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* This must match what's in frame.h in gcc. */
+
+struct object
+{
+  void *pc_begin;
+  void *pc_end;
+  void *fde_begin;
+  void *fde_array;
+  __SIZE_TYPE__ count;
+  struct object *next;
+};
diff --git a/sysdeps/gnu/errlist.c b/sysdeps/gnu/errlist.c
index 4c635d2b97..1b15c5e3a9 100644
--- a/sysdeps/gnu/errlist.c
+++ b/sysdeps/gnu/errlist.c
@@ -59,7 +59,7 @@ TRANS represented by a file you specified, and it couldn't find the device.
 TRANS This can mean that the device file was installed incorrectly, or that
 TRANS the physical device is missing or not correctly attached to the
 TRANS computer. */
-    [ERR_REMAP (ENXIO)] = N_("Device not configured"),
+    [ERR_REMAP (ENXIO)] = N_("No such device or address"),
 #endif
 #ifdef E2BIG
 /*
diff --git a/sysdeps/ia64/bits/fenv.h b/sysdeps/ia64/bits/fenv.h
index 9c3bd476e3..783fc9bff2 100644
--- a/sysdeps/ia64/bits/fenv.h
+++ b/sysdeps/ia64/bits/fenv.h
@@ -67,10 +67,10 @@ enum
 
 
 /* Type representing exception flags.  */
-typedef unsigned long fexcept_t;
+typedef unsigned long int fexcept_t;
 
 /* Type representing floating-point environment.  */
-typedef unsigned long fenv_t;
+typedef unsigned long int fenv_t;
 
 /* If the default argument is used we use this value.  */
 #define FE_DFL_ENV	((__const fenv_t *) 0xc009804c0270033fUL)
diff --git a/sysdeps/ia64/fpu/fclrexcpt.c b/sysdeps/ia64/fpu/fclrexcpt.c
index fbd93ce5da..40ba1792ed 100644
--- a/sysdeps/ia64/fpu/fclrexcpt.c
+++ b/sysdeps/ia64/fpu/fclrexcpt.c
@@ -30,7 +30,7 @@ feclearexcept (int excepts)
   __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (fpsr));
 
   /* Clear the relevant bits.  */
-  fpsr &= ~(((unsigned long int) ((excepts & FE_ALL_EXCEPT) << 13)));
+  fpsr &= ~(((fenv_t) ((excepts & FE_ALL_EXCEPT) << 13)));
   /* Put the new state in effect.  */
   __asm__ __volatile__ ("mov.m ar.fpsr=%0" :: "r" (fpsr) : "memory");
 
diff --git a/sysdeps/ia64/fpu/fedisblxcpt.c b/sysdeps/ia64/fpu/fedisblxcpt.c
index fceedc22be..1006e033e5 100644
--- a/sysdeps/ia64/fpu/fedisblxcpt.c
+++ b/sysdeps/ia64/fpu/fedisblxcpt.c
@@ -29,7 +29,7 @@ fedisableexcept (int excepts)
   /* Get the current fpsr.  */
   __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (old_fpsr));
 
-  new_fpsr = old_fpsr |= FE_ALL_EXCEPT;
+  new_fpsr = old_fpsr | ((fenv_t) excepts & FE_ALL_EXCEPT);
 
   __asm__ __volatile__ ("mov.m ar.fpsr=%0" :: "r" (new_fpsr) : "memory");
 
diff --git a/sysdeps/ia64/fpu/feenablxcpt.c b/sysdeps/ia64/fpu/feenablxcpt.c
index 2c54476681..686b7505cc 100644
--- a/sysdeps/ia64/fpu/feenablxcpt.c
+++ b/sysdeps/ia64/fpu/feenablxcpt.c
@@ -29,8 +29,7 @@ feenableexcept (int excepts)
   /* Get the current fpsr.  */
   __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r " (old_fpsr));
 
-  new_fpsr = ((old_fpsr & FE_ALL_EXCEPT)
-	      | (old_fpsr & ((unsigned long int) excepts ^ FE_ALL_EXCEPT)));
+  new_fpsr = old_fpsr & ~((fenv_t) excepts & FE_ALL_EXCEPT);
 
   __asm__ __volatile__ ("mov.m ar.fpsr=%0" :: "r" (new_fpsr) : "memory");
 
diff --git a/sysdeps/ia64/fpu/fesetenv.c b/sysdeps/ia64/fpu/fesetenv.c
index b1209ca34e..79651ea1ce 100644
--- a/sysdeps/ia64/fpu/fesetenv.c
+++ b/sysdeps/ia64/fpu/fesetenv.c
@@ -30,8 +30,8 @@ fesetenv (const fenv_t *envp)
      Magic encoding of default values: bit 62+63 set (which will never
      happen for a user-space address) means it's not indirect.
   */
-  if (((unsigned long int) envp >> 62) == 0x03)
-    env = (unsigned long int) envp & 0x3fffffffffffffff;
+  if (((fenv_t) envp >> 62) == 0x03)
+    env = (fenv_t) envp & 0x3fffffffffffffff;
   else
     env = *envp;
 
diff --git a/sysdeps/ia64/fpu/fesetround.c b/sysdeps/ia64/fpu/fesetround.c
index 66d7f89f39..7738eb209e 100644
--- a/sysdeps/ia64/fpu/fesetround.c
+++ b/sysdeps/ia64/fpu/fesetround.c
@@ -23,7 +23,7 @@
 int
 fesetround (int round)
 {
-  unsigned long int fpsr;
+  fenv_t fpsr;
 
   if (round & ~3)
     return 0;
@@ -32,7 +32,7 @@ fesetround (int round)
   __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (fpsr));
 
   /* Set the relevant bits.  */
-  fpsr = (fpsr & ~(3UL << 10)) | ((unsigned long int) round << 10);
+  fpsr = (fpsr & ~(3UL << 10)) | ((fenv_t) round << 10);
 
   /* Put the new state in effect.  */
   __asm__ __volatile__ ("mov.m ar.fpsr=%0" :: "r" (fpsr) : "memory");
diff --git a/sysdeps/ia64/fpu/fgetexcptflg.c b/sysdeps/ia64/fpu/fgetexcptflg.c
index 555530762d..46a04e3f2c 100644
--- a/sysdeps/ia64/fpu/fgetexcptflg.c
+++ b/sysdeps/ia64/fpu/fgetexcptflg.c
@@ -28,7 +28,7 @@ fegetexceptflag (fexcept_t *flagp, int excepts)
   /* Get the current exceptions.  */
   __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (fpsr));
 
-  *flagp = (fpsr ^ FE_ALL_EXCEPT) & excepts & FE_ALL_EXCEPT;
+  *flagp = (fexcept_t) ((fpsr >> 13) & excepts & FE_ALL_EXCEPT);
 
   /* Success.  */
   return 0;
diff --git a/sysdeps/ia64/fpu/fsetexcptflg.c b/sysdeps/ia64/fpu/fsetexcptflg.c
index 5e040416d4..69643636c3 100644
--- a/sysdeps/ia64/fpu/fsetexcptflg.c
+++ b/sysdeps/ia64/fpu/fsetexcptflg.c
@@ -19,7 +19,6 @@
    Boston, MA 02111-1307, USA.  */
 
 #include <fenv.h>
-#include <math.h>
 
 int
 fesetexceptflag (const fexcept_t *flagp, int excepts)
@@ -29,12 +28,10 @@ fesetexceptflag (const fexcept_t *flagp, int excepts)
   /* Get the current exception state.  */
   __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (fpsr));
 
-  /* Get the reverse bits so we can enable the exceptions flagged
-     rather than disable them.  */
-  excepts ^= FE_ALL_EXCEPT;
+  fpsr &= ~(((fenv_t) excepts & FE_ALL_EXCEPT) << 13);
 
   /* Set all the bits that were called for.  */
-  fpsr = (fpsr & ~FE_ALL_EXCEPT) | (*flagp & excepts & FE_ALL_EXCEPT);
+  fpsr |= ((*flagp & excepts & FE_ALL_EXCEPT) << 13);
 
   /* And store it back.  */
   __asm__ __volatile__ ("mov.m ar.fpsr=%0" :: "r" (fpsr) : "memory");
diff --git a/sysdeps/ia64/gccframe.h b/sysdeps/ia64/gccframe.h
new file mode 100644
index 0000000000..606bec630f
--- /dev/null
+++ b/sysdeps/ia64/gccframe.h
@@ -0,0 +1,32 @@
+/* Definition of object in frame unwind info.  ia64 version.
+   Copyright (C) 2000 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., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* This must match what's in frame.h in gcc. */
+
+struct object
+{
+  void *pc_base;        /* This field will be set by find_fde. */
+  void *pc_begin;
+  void *pc_end;
+  void *fde_begin;
+  void *fde_end;
+  void *fde_array;
+  __SIZE_TYPE__ count;
+  struct object *next;
+};