mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-03 00:10:10 +00:00
Update.
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.
This commit is contained in:
parent
21ab6fb6bc
commit
6eaccb759a
12
ChangeLog
12
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>
|
1999-01-29 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
* version.h (VERSION): Bump to 2.0.112.
|
* version.h (VERSION): Bump to 2.0.112.
|
||||||
|
@ -314,6 +314,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
|
|||||||
&guardaddr, &guardsize) == 0)
|
&guardaddr, &guardsize) == 0)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
__pthread_handles_num++;
|
||||||
/* Allocate new thread identifier */
|
/* Allocate new thread identifier */
|
||||||
pthread_threads_counter += PTHREAD_THREADS_MAX;
|
pthread_threads_counter += PTHREAD_THREADS_MAX;
|
||||||
new_thread_id = sseg + pthread_threads_counter;
|
new_thread_id = sseg + pthread_threads_counter;
|
||||||
|
6
scripts/config.sub
vendored
6
scripts/config.sub
vendored
@ -152,7 +152,8 @@ case $basic_machine in
|
|||||||
tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
|
tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
|
||||||
| arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
|
| arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
|
||||||
| 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 | hppa2.0 \
|
| 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 \
|
| i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
|
||||||
| mips64 | mipsel | mips64el | mips64orion | mips64orionel \
|
| mips64 | mipsel | mips64el | mips64orion | mips64orionel \
|
||||||
| mipstx39 | mipstx39el | armv[34][lb] \
|
| mipstx39 | mipstx39el | armv[34][lb] \
|
||||||
@ -176,7 +177,8 @@ case $basic_machine in
|
|||||||
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
|
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
|
||||||
| power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
|
| power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
|
||||||
| xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* \
|
| 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-* \
|
| ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
|
||||||
| sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
|
| sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
|
||||||
| sparc64-* | mips64-* | mipsel-* | armv[34][lb]-* \
|
| sparc64-* | mips64-* | mipsel-* | armv[34][lb]-* \
|
||||||
|
102
sysdeps/alpha/atomicity.h
Normal file
102
sysdeps/alpha/atomicity.h
Normal file
@ -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 */
|
@ -17,18 +17,17 @@
|
|||||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
#ifndef __USE_EXTERN_INLINES
|
|
||||||
#define __USE_EXTERN_INLINES
|
|
||||||
#endif
|
|
||||||
#define __floor __i_floor
|
|
||||||
|
|
||||||
#include <math.h>
|
#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
|
double
|
||||||
__floor (double x)
|
__floor (double x)
|
||||||
{
|
{
|
||||||
|
/* Check not zero since floor(-0) == -0. */
|
||||||
if (x != 0 && fabs (x) < 9007199254740992.0) /* 1 << DBL_MANT_DIG */
|
if (x != 0 && fabs (x) < 9007199254740992.0) /* 1 << DBL_MANT_DIG */
|
||||||
{
|
{
|
||||||
double __tmp1;
|
double __tmp1;
|
||||||
|
@ -17,14 +17,12 @@
|
|||||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
#ifndef __USE_EXTERN_INLINES
|
|
||||||
#define __USE_EXTERN_INLINES
|
|
||||||
#endif
|
|
||||||
#define __floorf __i_floorf
|
|
||||||
|
|
||||||
#include <math.h>
|
#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
|
float
|
||||||
__floorf (float x)
|
__floorf (float x)
|
||||||
@ -37,7 +35,7 @@ __floorf (float x)
|
|||||||
convert back to S_Floating in the end. The initial
|
convert back to S_Floating in the end. The initial
|
||||||
conversion to T_Floating is needed to handle denormals. */
|
conversion to T_Floating is needed to handle denormals. */
|
||||||
|
|
||||||
float __tmp1, __tmp2;
|
float tmp1, tmp2;
|
||||||
|
|
||||||
__asm ("cvtst/s %3,%2\n\t"
|
__asm ("cvtst/s %3,%2\n\t"
|
||||||
#ifdef _IEEE_FP_INEXACT
|
#ifdef _IEEE_FP_INEXACT
|
||||||
@ -46,7 +44,7 @@ __floorf (float x)
|
|||||||
"cvttq/svm %2,%1\n\t"
|
"cvttq/svm %2,%1\n\t"
|
||||||
#endif
|
#endif
|
||||||
"cvtqt/m %1,%0\n\t"
|
"cvtqt/m %1,%0\n\t"
|
||||||
: "=f"(x), "=&f"(__tmp1), "=&f"(__tmp2)
|
: "=f"(x), "=&f"(tmp1), "=&f"(tmp2)
|
||||||
: "f"(x));
|
: "f"(x));
|
||||||
}
|
}
|
||||||
return x;
|
return x;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Return list with names for address in backtrace.
|
/* 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.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
||||||
|
|
||||||
@ -76,9 +76,11 @@ __backtrace_symbols (array, size)
|
|||||||
char buf[20];
|
char buf[20];
|
||||||
|
|
||||||
if (array[cnt] >= (void *) info[cnt].dli_saddr)
|
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
|
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]",
|
last += 1 + sprintf (last, "%s%s%s%s%s[%p]",
|
||||||
info[cnt].dli_fname ?: "",
|
info[cnt].dli_fname ?: "",
|
||||||
|
Loading…
Reference in New Issue
Block a user