aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/mach
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2003-02-25 23:45:16 +0000
committerRoland McGrath <roland@gnu.org>2003-02-25 23:45:16 +0000
commit1d02f71fe4046c1cd17ff6b6687a89932797cb3b (patch)
treed73f941e908994fa60b5932d98510aaf5cb15c2f /sysdeps/mach
parentfec417190420a427bec2340853f42051da251b65 (diff)
downloadglibc-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.h10
-rw-r--r--sysdeps/mach/configure49
-rw-r--r--sysdeps/mach/hurd/alpha/tls.h53
-rwxr-xr-xsysdeps/mach/hurd/configure10
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 ()
{