]> sourceware.org Git - glibc.git/commitdiff
Update. cvs/glibc-2_0_112 glibc-2.0.112
authorUlrich Drepper <drepper@redhat.com>
Fri, 29 Jan 1999 16:58:13 +0000 (16:58 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 29 Jan 1999 16:58:13 +0000 (16:58 +0000)
1999-01-29  Richard Henderson  <rth@twiddle.net>

* scripts/config.sub: Recognize alpha{pca5[67],ev[67]}.

* sysdeps/generic/elf/backtracesyms.c (__backtrace_symbols):
Format pointer differences as longs.

* sysdeps/alpha/fpu/s_floor.c, sysdeps/alpha/fpu/s_floorf.c:
Copy commentary from bits/mathinclude.h.  Kill unused defines.

* sysdeps/alpha/atomicity.h: New file.

ChangeLog
linuxthreads/manager.c
scripts/config.sub
sysdeps/alpha/atomicity.h [new file with mode: 0644]
sysdeps/alpha/fpu/s_floor.c
sysdeps/alpha/fpu/s_floorf.c
sysdeps/generic/elf/backtracesyms.c

index 5f1db4db07cc7f68c00e0a53f32d6c72ded1786a..adefded996f353364dea903096199698d64398fe 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+1999-01-29  Richard Henderson  <rth@twiddle.net>
+
+       * scripts/config.sub: Recognize alpha{pca5[67],ev[67]}.
+
+       * sysdeps/generic/elf/backtracesyms.c (__backtrace_symbols):
+       Format pointer differences as longs.
+
+       * sysdeps/alpha/fpu/s_floor.c, sysdeps/alpha/fpu/s_floorf.c:
+       Copy commentary from bits/mathinclude.h.  Kill unused defines.
+
+       * sysdeps/alpha/atomicity.h: New file.
+
 1999-01-29  Ulrich Drepper  <drepper@cygnus.com>
 
        * version.h (VERSION): Bump to 2.0.112.
index b244d876869e3dc130fff92251b5ae66d19a8126..033e5adc5fe0a6fbcba13f1fe1dd66ca789d36b1 100644 (file)
@@ -314,6 +314,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
                                  &guardaddr, &guardsize) == 0)
         break;
     }
+  __pthread_handles_num++;
   /* Allocate new thread identifier */
   pthread_threads_counter += PTHREAD_THREADS_MAX;
   new_thread_id = sseg + pthread_threads_counter;
index df7022d37effb60da33530e16904e8bf2f4311eb..8e0adacb9b8ae3a027abe07fbcee0038d0abe1d8 100755 (executable)
@@ -152,7 +152,8 @@ case $basic_machine in
        tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
                | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
                | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 | hppa2.0 \
-               | alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \
+               | alpha | alphaev5 | alphaev56 | alphapca56 | alphaev6 \
+               | alphapca57 | alphaev7 | we32k | ns16k | clipper \
                | i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
                | mips64 | mipsel | mips64el | mips64orion | mips64orionel \
                | mipstx39 | mipstx39el | armv[34][lb] \
@@ -176,7 +177,8 @@ case $basic_machine in
              | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
              | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
              | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* \
-             | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
+             | alpha-* | alphaev5-* | alphaev56-* | alphapca56-* \
+             | alphaev6-* | alphapca57-* | alphaev7-* | we32k-* | cydra-* \
              | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
              | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
              | sparc64-* | mips64-* | mipsel-* | armv[34][lb]-* \
diff --git a/sysdeps/alpha/atomicity.h b/sysdeps/alpha/atomicity.h
new file mode 100644 (file)
index 0000000..34a538f
--- /dev/null
@@ -0,0 +1,102 @@
+/* Low-level functions for atomic operations.  Alpha version.
+   Copyright (C) 1999 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 _ATOMICITY_H
+#define _ATOMICITY_H   1
+
+#include <inttypes.h>
+
+
+static inline int
+__attribute__ ((unused))
+exchange_and_add (volatile uint32_t *mem, int val)
+{
+  register int result, tmp;
+
+  __asm__ __volatile__ (
+       "/* Inline exchange & add */\n"
+       "1:\t"
+       "ldl_l  %0,%3\n\t"
+       "addl   %0,%4,%1\n\t"
+       "stl_c  %1,%2\n\t"
+       "beq    %1,2f\n"
+       ".subsection 2\n"
+       "2:\t"
+       "br     1b\n"
+       ".subsection 1\n\t"
+       "mb\n\t"
+       "/* End exchange & add */"
+       : "=&r"(result), "=&r"(tmp), "=m"(*mem)
+       : "m" (*mem), "r"(val));
+
+  return result;
+}
+
+static inline void
+__attribute__ ((unused))
+atomic_add (volatile uint32_t *mem, int val)
+{
+  register int result;
+
+  __asm__ __volatile__ (
+       "/* Inline exchange & add */\n"
+       "1:\t"
+       "ldl_l  %0,%2\n\t"
+       "addl   %0,%3,%0\n\t"
+       "stl_c  %0,%1\n\t"
+       "beq    %0,2f\n\t"
+       ".subsection 2\n"
+       "2:\t"
+       "br     1b\n"
+       ".subsection 1\n\t"
+       "mb\n\t"
+       "/* End exchange & add */"
+       : "=&r"(result), "=m"(*mem)
+       : "m" (*mem), "r"(val));
+}
+
+static inline long
+__attribute__ ((unused))
+compare_and_swap (volatile long int *p, long int oldval, long int newval)
+{
+  long int ret;
+
+  __asm__ __volatile__ (
+       "/* Inline compare & swap */\n"
+       "1:\t"
+       "ldq_l  %0,%4\n\t"
+       "cmpeq  %0,%2,%0\n\t"
+       "beq    %0,3f\n\t"
+       "mov    %3,%0\n\t"
+       "stq_c  %0,%1\n\t"
+       "beq    %0,2f\n\t"
+       ".subsection 2\n"
+       "2:\t"
+       "br     1b\n"
+       ".subsection 1\n\t"
+       "3:\t"
+       "mb\n\t"
+       "/* End compare & swap */"
+       : "=&r"(ret), "=m"(*p)
+       : "r"(oldval), "r"(newval), "m"(*p));
+
+  return ret;
+}
+
+#endif /* atomicity.h */
index c7e14662fe26e8e1567bb78cd4976bb8e2d4458d..146e19b35a12e17f1dcca3718b9df6e0d313dcd4 100644 (file)
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef __USE_EXTERN_INLINES
-#define __USE_EXTERN_INLINES
-#endif
-#define __floor __i_floor
-
 #include <math.h>
 
-#undef __floor
+
+/* Use the -inf rounding mode conversion instructions to implement
+   floor.  We note when the exponent is large enough that the value
+   must be integral, as this avoids unpleasant integer overflows.  */
 
 double
 __floor (double x)
 {
+  /* Check not zero since floor(-0) == -0.  */
   if (x != 0 && fabs (x) < 9007199254740992.0)  /* 1 << DBL_MANT_DIG */
     {
       double __tmp1;
index 7502b6781e39da5e28205c12b08fc956069f320d..9e693642dd68c1e8df20c8b87e51d7c3b1e4cec5 100644 (file)
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef __USE_EXTERN_INLINES
-#define __USE_EXTERN_INLINES
-#endif
-#define __floorf __i_floorf
-
 #include <math.h>
 
-#undef __floorf
+
+/* Use the -inf rounding mode conversion instructions to implement
+   floor.  We note when the exponent is large enough that the value
+   must be integral, as this avoids unpleasant integer overflows.  */
 
 float
 __floorf (float x)
@@ -37,7 +35,7 @@ __floorf (float x)
         convert back to S_Floating in the end.  The initial
         conversion to T_Floating is needed to handle denormals.  */
 
-      float __tmp1, __tmp2;
+      float tmp1, tmp2;
 
       __asm ("cvtst/s %3,%2\n\t"
 #ifdef _IEEE_FP_INEXACT
@@ -46,7 +44,7 @@ __floorf (float x)
             "cvttq/svm %2,%1\n\t"
 #endif
             "cvtqt/m %1,%0\n\t"
-            : "=f"(x), "=&f"(__tmp1), "=&f"(__tmp2)
+            : "=f"(x), "=&f"(tmp1), "=&f"(tmp2)
             : "f"(x));
     }
   return x;
index a14ac596b4df7f9d93ecd123be7bc0e2b58e33f6..100d94aa42934191ad5e4b401f84ac90381c2396 100644 (file)
@@ -1,5 +1,5 @@
 /* Return list with names for address in backtrace.
-   Copyright (C) 1998 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -76,9 +76,11 @@ __backtrace_symbols (array, size)
              char buf[20];
 
              if (array[cnt] >= (void *) info[cnt].dli_saddr)
-               sprintf (buf, "+0x%x", array[cnt] - info[cnt].dli_saddr);
+               sprintf (buf, "+%#lx",
+                        (unsigned long)(array[cnt] - info[cnt].dli_saddr));
              else
-               sprintf (buf, "-0x%x", info[cnt].dli_saddr - array[cnt]);
+               sprintf (buf, "-%#lx",
+                        (unsigned long)(info[cnt].dli_saddr - array[cnt]));
 
              last += 1 + sprintf (last, "%s%s%s%s%s[%p]",
                                   info[cnt].dli_fname ?: "",
This page took 0.062063 seconds and 5 git commands to generate.