diff options
author | Roland McGrath <roland@gnu.org> | 2003-02-25 23:45:16 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2003-02-25 23:45:16 +0000 |
commit | 1d02f71fe4046c1cd17ff6b6687a89932797cb3b (patch) | |
tree | d73f941e908994fa60b5932d98510aaf5cb15c2f /sysdeps/mach | |
parent | fec417190420a427bec2340853f42051da251b65 (diff) | |
download | glibc-1d02f71fe4046c1cd17ff6b6687a89932797cb3b.tar glibc-1d02f71fe4046c1cd17ff6b6687a89932797cb3b.tar.gz glibc-1d02f71fe4046c1cd17ff6b6687a89932797cb3b.tar.bz2 glibc-1d02f71fe4046c1cd17ff6b6687a89932797cb3b.zip |
linuxthreads/ChangeLog
2003-02-25 Roland McGrath <roland@redhat.com>
* sysdeps/powerpc/powerpc64/dl-machine.h: Support new TLS relocs.
* sysdeps/powerpc/powerpc64/dl-tls.h: New file.
Diffstat (limited to 'sysdeps/mach')
-rw-r--r-- | sysdeps/mach/alpha/machine-lock.h | 10 | ||||
-rw-r--r-- | sysdeps/mach/configure | 49 | ||||
-rw-r--r-- | sysdeps/mach/hurd/alpha/tls.h | 53 | ||||
-rwxr-xr-x | sysdeps/mach/hurd/configure | 10 |
4 files changed, 94 insertions, 28 deletions
diff --git a/sysdeps/mach/alpha/machine-lock.h b/sysdeps/mach/alpha/machine-lock.h index 80f8750c87..363c29e56f 100644 --- a/sysdeps/mach/alpha/machine-lock.h +++ b/sysdeps/mach/alpha/machine-lock.h @@ -1,5 +1,5 @@ /* Machine-specific definition for spin locks. Alpha version. - Copyright (C) 1994, 1997 Free Software Foundation, Inc. + Copyright (C) 1994,97,2002 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 @@ -38,8 +38,8 @@ typedef __volatile long int __spin_lock_t; _EXTERN_INLINE void __spin_unlock (__spin_lock_t *__lock) { - __asm__ __volatile__ ("mb; stq $31, %0; mb" - : "=m" (__lock)); + __asm__ __volatile__ ("mb"); + *__lock = 0; } /* Try to lock LOCK; return nonzero if we locked it, zero if another has. */ @@ -47,6 +47,9 @@ __spin_unlock (__spin_lock_t *__lock) _EXTERN_INLINE int __spin_try_lock (register __spin_lock_t *__lock) { +#if 1 + return 1; +#else register long int __rtn, __tmp; do @@ -66,6 +69,7 @@ __spin_try_lock (register __spin_lock_t *__lock) } while (! __rtn); /* RTN is now nonzero; we have the lock. */ return __rtn; +#endif } /* Return nonzero if LOCK is locked. */ diff --git a/sysdeps/mach/configure b/sysdeps/mach/configure index 597a0a5b1b..6fd414845f 100644 --- a/sysdeps/mach/configure +++ b/sysdeps/mach/configure @@ -102,7 +102,7 @@ _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err + egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 @@ -148,7 +148,7 @@ _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err + egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 @@ -193,6 +193,12 @@ else #line $LINENO "configure" #include "confdefs.h" #include <mach/mach_types.h> +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif int main () { @@ -235,6 +241,12 @@ else #line $LINENO "configure" #include "confdefs.h" #include <mach/mach_types.h> +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif int main () { @@ -278,6 +290,12 @@ else #line $LINENO "configure" #include "confdefs.h" #include <mach/task_info.h> +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif int main () { @@ -336,7 +354,7 @@ _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err + egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 @@ -372,21 +390,6 @@ echo "$as_me: error: what manner of Mach is this?" >&2;} { (exit 1); exit 1; }; } fi -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep - - echo "$as_me:$LINENO: checking for host_page_size in mach_host.defs" >&5 echo $ECHO_N "checking for host_page_size in mach_host.defs... $ECHO_C" >&6 if test "${libc_cv_mach_host_page_size+set}" = set; then @@ -399,7 +402,7 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "host_page_size" >/dev/null 2>&1; then + egrep "host_page_size" >/dev/null 2>&1; then libc_cv_mach_host_page_size=yes else libc_cv_mach_host_page_size=no @@ -429,7 +432,7 @@ _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err + egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 @@ -469,7 +472,7 @@ _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err + egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 @@ -514,7 +517,7 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "i386_io_perm_modify" >/dev/null 2>&1; then + egrep "i386_io_perm_modify" >/dev/null 2>&1; then libc_cv_mach_i386_ioports=yes else libc_cv_mach_i386_ioports=no @@ -543,7 +546,7 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "i386_set_gdt" >/dev/null 2>&1; then + egrep "i386_set_gdt" >/dev/null 2>&1; then libc_cv_mach_i386_gdt=yes else libc_cv_mach_i386_gdt=no diff --git a/sysdeps/mach/hurd/alpha/tls.h b/sysdeps/mach/hurd/alpha/tls.h new file mode 100644 index 0000000000..e820a013bf --- /dev/null +++ b/sysdeps/mach/hurd/alpha/tls.h @@ -0,0 +1,53 @@ +/* Definition for thread-local data handling. Hurd/Alpha version. + Copyright (C) 2002 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _TLS_H +#define _TLS_H + +#if defined HAVE_TLS_SUPPORT && 0 + +/* Signal that TLS support is available. */ +# define USE_TLS 1 + +/* Code to initially initialize the thread pointer. This might need + special attention since 'errno' is not yet available and if the + operation can cause a failure 'errno' must not be touched. */ +# define TLS_INIT_TP(descr) \ + do \ + { \ + register tcbhead_t *_a0 __asm__ ("$16") = (descr); \ + __asm__ ("call_pal %0" : : "i" (PAL_wruniq), "r" (_a0)); \ + } while (0) + +# define THREAD_TCB() \ + ({ \ + register tcbhead_t *_rv __asm__ ("$0"); \ + __asm__ ("call_pal %0" : "=r" (rv) : "i" (PAL_rduniq)); \ + _rv; \ + }) + +/* Install new dtv for current thread. */ +# define INSTALL_NEW_DTV(dtv) (THREAD_DTV () = (dtv)) + +/* Return the address of the dtv for the current thread. */ +# define THREAD_DTV() (THREAD_TCB ()->dtv) + +#endif /* HAVE_TLS_SUPPORT */ + +#endif /* tls.h */ diff --git a/sysdeps/mach/hurd/configure b/sysdeps/mach/hurd/configure index 86239bb483..07f62b87c4 100755 --- a/sysdeps/mach/hurd/configure +++ b/sysdeps/mach/hurd/configure @@ -27,16 +27,22 @@ case "$machine" in ;; esac - echo "$as_me:$LINENO: checking Hurd header version" >&5 echo $ECHO_N "checking Hurd header version... $ECHO_C" >&6 if test "${libc_cv_hurd_version+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat >conftest.$ac_ext <<_ACEOF + +cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <hurd/version.h> +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif int main () { |