diff options
| author | Ulrich Drepper <drepper@redhat.com> | 2000-05-05 16:49:44 +0000 |
|---|---|---|
| committer | Ulrich Drepper <drepper@redhat.com> | 2000-05-05 16:49:44 +0000 |
| commit | f1d86a931b2c51a24540e7ea3cda60dc154e064a (patch) | |
| tree | c37912be8d04d08531989f4fb76bce5f18052270 | |
| parent | a6fe55da9a6f5dfd05247938233a55675cb842c8 (diff) | |
| download | glibc-f1d86a931b2c51a24540e7ea3cda60dc154e064a.tar.xz glibc-f1d86a931b2c51a24540e7ea3cda60dc154e064a.zip | |
Update.
2000-05-05 Jes Sorensen <jes@linuxcare.com>
* sysdeps/unix/sysv/linux/ia64/sysdep.h: New file.
* sysdeps/unix/sysv/linux/ia64/syscall.S: New file.
* sysdeps/unix/sysv/linux/ia64/bits/types.h: New file.
* sysdeps/unix/sysv/linux/ia64/bits/endian.h: New file.
* sysdeps/ia64/Implies: New file.
* sysdeps/ia64/Versions: New file. Declare _dl_symbol_address.
* sysdeps/ia64/Makefile: New file.
* sysdeps/ia64/gmp-mparam.h: New file,
* sysdeps/ia64/elf/start.S: New file.
* sysdeps/ia64/bits/fenv.h: New file.
2000-05-05 David Mosberger-Tang <davidm@hpl.hp.com>
* sysdeps/unix/sysv/linux/ia64/sysdep.S: New file.
2000-04-26 Jes Sorensen <Jes.Sorensen@cern.ch>
* sysdeps/unix/sysv/linux/ia64/bits/elfclass.h: New file. The
ia64 has 64 bit .hash entries just as the Alpha.
2000-04-25 Jes Sorensen <Jes.Sorensen@cern.ch>
* sysdeps/ia64/memprof.h: New file. Provide GETSP() macro.
2000-04-17 Jes Sorensen <Jes.Sorensen@cern.ch>
* sysdeps/ia64/fpu/fclrexcpt.c: New file.
* sysdeps/ia64/fpu/fedisblxcpt.c: New file.
* sysdeps/ia64/fpu/feenablxcpt.c: New file.
* sysdeps/ia64/fpu/fegetenv.c: New file.
* sysdeps/ia64/fpu/fegetexcept.c: New file.
* sysdeps/ia64/fpu/fegetround.c: New file.
* sysdeps/ia64/fpu/feholdexcpt.c: New file.
* sysdeps/ia64/fpu/fesetenv.c: New file.
* sysdeps/ia64/fpu/fesetround.c: New file.
* sysdeps/ia64/fpu/feupdateenv.c: New file.
* sysdeps/ia64/fpu/fgetexcptflg.c: New file.
* sysdeps/ia64/fpu/fraiseexcpt.c: New file.
* sysdeps/ia64/fpu/fsetexcptflg.c: New file.
* sysdeps/ia64/fpu/ftestexcept.c: New file.
* sysdeps/unix/sysv/linux/i386/dl-procinfo.h (_DL_HWCAP_COUNT): New.
* sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h
(_DL_HWCAP_COUNT): New.
* sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h
(_DL_HWCAP_COUNT): New.
27 files changed, 1234 insertions, 7 deletions
@@ -1,3 +1,50 @@ +2000-05-05 Jes Sorensen <jes@linuxcare.com> + + * sysdeps/unix/sysv/linux/ia64/sysdep.h: New file. + * sysdeps/unix/sysv/linux/ia64/syscall.S: New file. + + * sysdeps/unix/sysv/linux/ia64/bits/types.h: New file. + * sysdeps/unix/sysv/linux/ia64/bits/endian.h: New file. + + * sysdeps/ia64/Implies: New file. + * sysdeps/ia64/Versions: New file. Declare _dl_symbol_address. + * sysdeps/ia64/Makefile: New file. + * sysdeps/ia64/gmp-mparam.h: New file, + + * sysdeps/ia64/elf/start.S: New file. + + * sysdeps/ia64/bits/fenv.h: New file. + +2000-05-05 David Mosberger-Tang <davidm@hpl.hp.com> + + * sysdeps/unix/sysv/linux/ia64/sysdep.S: New file. + +2000-04-26 Jes Sorensen <Jes.Sorensen@cern.ch> + + * sysdeps/unix/sysv/linux/ia64/bits/elfclass.h: New file. The + ia64 has 64 bit .hash entries just as the Alpha. + +2000-04-25 Jes Sorensen <Jes.Sorensen@cern.ch> + + * sysdeps/ia64/memprof.h: New file. Provide GETSP() macro. + +2000-04-17 Jes Sorensen <Jes.Sorensen@cern.ch> + + * sysdeps/ia64/fpu/fclrexcpt.c: New file. + * sysdeps/ia64/fpu/fedisblxcpt.c: New file. + * sysdeps/ia64/fpu/feenablxcpt.c: New file. + * sysdeps/ia64/fpu/fegetenv.c: New file. + * sysdeps/ia64/fpu/fegetexcept.c: New file. + * sysdeps/ia64/fpu/fegetround.c: New file. + * sysdeps/ia64/fpu/feholdexcpt.c: New file. + * sysdeps/ia64/fpu/fesetenv.c: New file. + * sysdeps/ia64/fpu/fesetround.c: New file. + * sysdeps/ia64/fpu/feupdateenv.c: New file. + * sysdeps/ia64/fpu/fgetexcptflg.c: New file. + * sysdeps/ia64/fpu/fraiseexcpt.c: New file. + * sysdeps/ia64/fpu/fsetexcptflg.c: New file. + * sysdeps/ia64/fpu/ftestexcept.c: New file. + 2000-05-05 Andreas Jaeger <aj@suse.de> * misc/tst-tsearch.c (main): Correct type for initstate argument. @@ -5,22 +52,21 @@ * sysdeps/generic/dl-procinfo.h (_DL_HWCAP_COUNT): New. (_dl_string_hwcap): New, does nothing. - * sysdeps/unix/sysv/linux/i386/dl-procinfo.h (_DL_HWCAP_COUNT): - New. + * sysdeps/unix/sysv/linux/i386/dl-procinfo.h (_DL_HWCAP_COUNT): New. (_dl_procinfo): Use _DL_HWCAP_COUNT instead of a constant. (_dl_string_hwcap): New function, converts from string to hwcap encoding. - * sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h (_DL_HWCAP_COUNT): - New. + * sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h + (_DL_HWCAP_COUNT): New. (_dl_procinfo): Use _DL_HWCAP_COUNT instead of a constant. (_dl_string_hwcap): New function, converts from string to hwcap encoding. - * sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h (_DL_HWCAP_COUNT): - New. + * sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h + (_DL_HWCAP_COUNT): New. (_dl_procinfo): Use _DL_HWCAP_COUNT instead of a constant. (_dl_string_hwcap): New function, converts from string to hwcap encoding. - + 2000-05-05 Ulrich Drepper <drepper@redhat.com> * elf/Makefile (distribute): Add dl-lookupcfg.h. diff --git a/sysdeps/ia64/Makefile b/sysdeps/ia64/Makefile new file mode 100644 index 0000000000..5f04a9dd66 --- /dev/null +++ b/sysdeps/ia64/Makefile @@ -0,0 +1,8 @@ +ifeq ($(subdir), csu) +CPPFLAGS-start.S = -D__ASSEMBLY__ +endif + +ifeq ($(subdir),elf) +dl-routines += dl-symaddr dl-fptr +rtld-routines += dl-symaddr dl-fptr +endif diff --git a/sysdeps/ia64/Versions b/sysdeps/ia64/Versions new file mode 100644 index 0000000000..e3323177f2 --- /dev/null +++ b/sysdeps/ia64/Versions @@ -0,0 +1,6 @@ +ld { + GLIBC_2.2 { + # ia64 specific functions in the dynamic linker, but used by libc.so. + _dl_symbol_address; + } +} diff --git a/sysdeps/ia64/bits/fenv.h b/sysdeps/ia64/bits/fenv.h new file mode 100644 index 0000000000..46e53ae08d --- /dev/null +++ b/sysdeps/ia64/bits/fenv.h @@ -0,0 +1,82 @@ +/* Copyright (C) 1999, 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. */ + +#ifndef _FENV_H +# error "Never use <bits/fenv.h> directly; include <fenv.h> instead." +#endif + + +/* Define bits representing the exception. We use the bit positions of + the appropriate bits in the FPSR... (Tahoe EAS 2.4 5-4)*/ + +enum + { + FE_INEXACT = 1UL << 5, +#define FE_INEXACT FE_INEXACT + + FE_UNDERFLOW = 1UL << 4, +#define FE_UNDERFLOW FE_UNDERFLOW + + FE_OVERFLOW = 1UL << 3, +#define FE_OVERFLOW FE_OVERFLOW + + FE_DIVBYZERO = 1UL << 2, +#define FE_DIVBYZERO FE_DIVBYZERO + + FE_UNNORMAL = 1UL << 1, +#define FE_UNNORMAL FE_UNNORMAL + + FE_INVALID = 1UL << 0, +#define FE_INVALID FE_INVALID + + FE_ALL_EXCEPT = + (FE_INEXACT | FE_UNDERFLOW | FE_OVERFLOW | FE_DIVBYZERO | FE_UNNORMAL | FE_INVALID) +#define FE_ALL_EXCEPT FE_ALL_EXCEPT + }; + + +enum + { + FE_TOWARDZERO = 3, +#define FE_TOWARDZERO FE_TOWARDZERO + + FE_UPWARD = 2, +#define FE_UPWARD FE_UPWARD + + FE_DOWNWARD = 1, +#define FE_DOWNWARD FE_DOWNWARD + + FE_TONEAREST = 0, +#define FE_TONEAREST FE_TONEAREST + }; + + +/* Type representing exception flags. */ +typedef unsigned long fexcept_t; + +/* Type representing floating-point environment. */ +typedef unsigned long fenv_t; + +/* If the default argument is used we use this value. */ +#define FE_DFL_ENV ((fenv_t *) 0xc009804c0270033fUL) + +#ifdef __USE_GNU +/* Floating-point environment where only FE_UNNORMAL is masked since this + exception is not generally supported by glibc. */ +# define FE_NOMASK_ENV ((fenv_t *) 0xc009804c02700302UL) +#endif diff --git a/sysdeps/ia64/elf/start.S b/sysdeps/ia64/elf/start.S new file mode 100644 index 0000000000..424fae8471 --- /dev/null +++ b/sysdeps/ia64/elf/start.S @@ -0,0 +1,84 @@ +/* Copyright (C) 1999, 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Written by Jes Sorensen, <Jes.Sorensen@cern.ch>, April 1999. + + 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. */ + +#include <asm/unistd.h> +#include <asm/fpu.h> + +/* + * Arguments for __libc_start_main: + * out0: main + * out1: argc + * out2: argv + * out3: init + * out4: fini + * out5: rtld_fini + * out6: stack_end + */ + + .psr abi64 + .psr lsb + .lsb + + .text + + .global _start# + .proc _start# + +_start: + { .mlx + alloc r2 = ar.pfs,0,0,7,0 + movl r3 = FPSR_DEFAULT + } + { .mlx + adds out2 = 16, sp /* get address of argc value */ + movl gp = @gprel(0f) + ;; + } +0: { .mii + ld8 out1 = [out2], 8 /* load argc and move out2 to become argv */ + mov r9 = ip + ;; + sub gp = r9, gp /* back-compute gp value */ + ;; + } + { .mfi + mov ar.fpsr = r3 + addl out0 = @ltoff(@fptr(main#)), gp + } + { .mfi + addl out4 = @ltoff(@fptr(_fini#)), gp + addl out3 = @ltoff(@fptr(_init#)), gp + ;; + } + { .mmi + ld8 out0 = [out0] /* pointer to `main' function descriptor */ + ld8 out3 = [out3] /* pointer to `init' function descriptor */ + adds out6 = 16, sp /* highest non-environment stack address */ + } + { .mib + ld8 out4 = [out4] /* pointer to `fini' function descriptor */ + mov out5 = ret0 /* dynamic linker destructor */ + br.call.sptk.few rp = __libc_start_main# + } + { .mib + mov rp = r0 + br.ret.sptk.few rp /* break miserably if we ever return */ + ;; + } + .endp _start# diff --git a/sysdeps/ia64/fpu/fclrexcpt.c b/sysdeps/ia64/fpu/fclrexcpt.c new file mode 100644 index 0000000000..fbd93ce5da --- /dev/null +++ b/sysdeps/ia64/fpu/fclrexcpt.c @@ -0,0 +1,39 @@ +/* Clear given exceptions in current floating-point environment. + Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Christian Boissat <Christian.Boissat@cern.ch>, 1999 and + Jes Sorensen <Jes.Sorensen@cern.ch>, 2000 + + 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. */ + +#include <fenv.h> + +int +feclearexcept (int excepts) +{ + fenv_t fpsr; + + /* Get the current state. */ + __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (fpsr)); + + /* Clear the relevant bits. */ + fpsr &= ~(((unsigned long int) ((excepts & FE_ALL_EXCEPT) << 13))); + /* Put the new state in effect. */ + __asm__ __volatile__ ("mov.m ar.fpsr=%0" :: "r" (fpsr) : "memory"); + + /* success */ + return 0; +} diff --git a/sysdeps/ia64/fpu/fedisblxcpt.c b/sysdeps/ia64/fpu/fedisblxcpt.c new file mode 100644 index 0000000000..fceedc22be --- /dev/null +++ b/sysdeps/ia64/fpu/fedisblxcpt.c @@ -0,0 +1,37 @@ +/* Disable floating-point exceptions. + Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jes Sorensen <Jes.Sorensen@cern.ch>, 2000. + + 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. */ + +#include <fenv.h> + +int +fedisableexcept (int excepts) +{ + fenv_t old_fpsr; + fenv_t new_fpsr; + + /* Get the current fpsr. */ + __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (old_fpsr)); + + new_fpsr = old_fpsr |= FE_ALL_EXCEPT; + + __asm__ __volatile__ ("mov.m ar.fpsr=%0" :: "r" (new_fpsr) : "memory"); + + return (old_fpsr ^ FE_ALL_EXCEPT) & FE_ALL_EXCEPT; +} diff --git a/sysdeps/ia64/fpu/feenablxcpt.c b/sysdeps/ia64/fpu/feenablxcpt.c new file mode 100644 index 0000000000..2c54476681 --- /dev/null +++ b/sysdeps/ia64/fpu/feenablxcpt.c @@ -0,0 +1,38 @@ +/* Enable floating-point exceptions. + Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jes Sorensen <Jes.Sorensen@cern.ch>, 2000. + + 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. */ + +#include <fenv.h> + +int +feenableexcept (int excepts) +{ + fenv_t old_fpsr; + fenv_t new_fpsr; + + /* 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))); + + __asm__ __volatile__ ("mov.m ar.fpsr=%0" :: "r" (new_fpsr) : "memory"); + + return (old_fpsr ^ FE_ALL_EXCEPT) & FE_ALL_EXCEPT; +} diff --git a/sysdeps/ia64/fpu/fegetenv.c b/sysdeps/ia64/fpu/fegetenv.c new file mode 100644 index 0000000000..4527bc506e --- /dev/null +++ b/sysdeps/ia64/fpu/fegetenv.c @@ -0,0 +1,29 @@ +/* Store current floating-point environment. + Copyright (C) 1997, 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Christian Boissat <Christian.Boissat@cern.ch>, 1999. + + 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. */ + +#include <fenv.h> + +int +fegetenv (fenv_t *envp) +{ + __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (*envp)); + + return 0; +} diff --git a/sysdeps/ia64/fpu/fegetexcept.c b/sysdeps/ia64/fpu/fegetexcept.c new file mode 100644 index 0000000000..828f7d |
