diff options
| -rw-r--r-- | libc/sysdeps/linux/mips/sysdep.h | 3 | ||||
| -rw-r--r-- | libpthread/nptl/sysdeps/mips/tls.h | 24 | ||||
| -rw-r--r-- | libpthread/nptl/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h | 1 | ||||
| -rw-r--r-- | libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.c | 1 | 
4 files changed, 27 insertions, 2 deletions
| diff --git a/libc/sysdeps/linux/mips/sysdep.h b/libc/sysdeps/linux/mips/sysdep.h index 0c30e20d7..56d159073 100644 --- a/libc/sysdeps/linux/mips/sysdep.h +++ b/libc/sysdeps/linux/mips/sysdep.h @@ -383,6 +383,9 @@ L(syse1):  #define __SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", \  	"$14", "$15", "$24", "$25", "memory" +/* Pointer mangling is not yet supported for MIPS.  */ +#define PTR_MANGLE(var) (void) (var) +#define PTR_DEMANGLE(var) (void) (var)  #endif  /* __ASSEMBLER__ */  #endif /* _LINUX_MIPS_SYSDEP_H */ diff --git a/libpthread/nptl/sysdeps/mips/tls.h b/libpthread/nptl/sysdeps/mips/tls.h index 0a83ac672..27b1c15df 100644 --- a/libpthread/nptl/sysdeps/mips/tls.h +++ b/libpthread/nptl/sysdeps/mips/tls.h @@ -1,5 +1,5 @@  /* Definition for thread-local data handling.  NPTL/MIPS version. -   Copyright (C) 2005 Free Software Foundation, Inc. +   Copyright (C) 2005, 2007 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 @@ -153,6 +153,28 @@ typedef struct  /* l_tls_offset == 0 is perfectly valid on MIPS, so we have to use some     different value to mean unset l_tls_offset.  */  # define NO_TLS_OFFSET		-1 +/* Get and set the global scope generation counter in struct pthread.  */ +#define THREAD_GSCOPE_FLAG_UNUSED 0 +#define THREAD_GSCOPE_FLAG_USED   1 +#define THREAD_GSCOPE_FLAG_WAIT   2 +#define THREAD_GSCOPE_RESET_FLAG() \ +  do									     \ +    { int __res								     \ +	= atomic_exchange_rel (&THREAD_SELF->header.gscope_flag,	     \ +			       THREAD_GSCOPE_FLAG_UNUSED);		     \ +      if (__res == THREAD_GSCOPE_FLAG_WAIT)				     \ +	lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE);   \ +    }									     \ +  while (0) +#define THREAD_GSCOPE_SET_FLAG() \ +  do									     \ +    {									     \ +      THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED;	     \ +      atomic_write_barrier ();						     \ +    }									     \ +  while (0) +#define THREAD_GSCOPE_WAIT() \ +  GL(dl_wait_lookup_done) ()  #endif /* __ASSEMBLER__ */ diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h index 95d532802..11b99e3b6 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h @@ -17,7 +17,6 @@     02111-1307 USA.  */  #include <sysdep.h> -#include <tls.h>  #ifndef __ASSEMBLER__  # include <pthreadP.h>  #endif diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.c b/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.c index f459bcf6e..643f4ed99 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.c +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.c @@ -22,6 +22,7 @@  #include <sysdep.h>  #include <lowlevellock.h>  #include <sys/time.h> +#include <tls.h>  void | 
