Author: jim
Date: 2006-02-24 23:07:56 -0700 (Fri, 24 Feb 2006)
New Revision: 1415

Modified:
   trunk/
   trunk/glibc/glibc-20060220-mips_nptl-1.patch
Log:
 [EMAIL PROTECTED]:  jim | 2006-02-24 22:07:14 -0800
 Fixes current MIPS NPTL testing patch



Property changes on: trunk
___________________________________________________________________
Name: svk:merge
   - cc2644d5-6cf8-0310-b111-c40428001e49:/patches:1710
e59974df-c20a-0410-b7e1-d7eaf1be8828:/patches:1460
   + cc2644d5-6cf8-0310-b111-c40428001e49:/patches:1710
e59974df-c20a-0410-b7e1-d7eaf1be8828:/patches:1462

Modified: trunk/glibc/glibc-20060220-mips_nptl-1.patch
===================================================================
--- trunk/glibc/glibc-20060220-mips_nptl-1.patch        2006-02-22 01:10:54 UTC 
(rev 1414)
+++ trunk/glibc/glibc-20060220-mips_nptl-1.patch        2006-02-25 06:07:56 UTC 
(rev 1415)
@@ -1,13 +1,12 @@
 Submitted By: Jim Gifford (patches at jg555 dot com)
 Date: 2006-02-06
 Initial Package Version: 20060206 Snapshot
-Origin: Daniel Jacobwitz and Lior Balkohen
+Origin: Daniel Jacobwitz,Lior Balkohen, and Jim Gifford
 Upstream Status: Submitted by Origin
 Description: Adds NPTL support for MIPS
  
-diff -Naur 
glibc-20060206.orig/nptl/sysdeps/unix/sysv/linux/mips/lowlevellock.h 
glibc-20060206/nptl/sysdeps/unix/sysv/linux/mips/lowlevellock.h
---- glibc-20060206.orig/nptl/sysdeps/unix/sysv/linux/mips/lowlevellock.h       
2005-03-28 09:21:52.000000000 +0000
-+++ glibc-20060206/nptl/sysdeps/unix/sysv/linux/mips/lowlevellock.h    
2006-02-09 19:43:11.000000000 +0000
+--- glibc-20060220.orig/nptl/sysdeps/unix/sysv/linux/mips/lowlevellock.h       
2005-03-28 01:21:52.000000000 -0800
++++ glibc-20060220/nptl/sysdeps/unix/sysv/linux/mips/lowlevellock.h    
2006-02-24 16:43:17.000000000 -0800
 @@ -1,4 +1,4 @@
 -/* Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
 +/* Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
@@ -41,7 +40,7 @@
      INTERNAL_SYSCALL_ERROR_P (__ret, __err) ? -__ret : __ret;               \
    })
  
-@@ -57,7 +59,7 @@
+@@ -57,21 +59,42 @@
      INTERNAL_SYSCALL_DECL (__err);                                          \
      long int __ret;                                                         \
      __ret = INTERNAL_SYSCALL (futex, __err, 4,                                
      \
@@ -50,7 +49,18 @@
      INTERNAL_SYSCALL_ERROR_P (__ret, __err) ? -__ret : __ret;               \
    })
  
-@@ -67,11 +69,23 @@
++#define lll_robust_mutex_dead(futexv) \
++  do                                                                        \
++    {                                                                       \
++      int *__futexp = &(futexv);                                            \
++      atomic_or (__futexp, FUTEX_OWNER_DIED);                               \
++      lll_futex_wake (__futexp, 1);                                         \
++    }                                                                       \
++  while (0)
++
+ /* Returns non-zero if error happened, zero if success.  */
+ #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val) \
+   ({                                                                        \
      INTERNAL_SYSCALL_DECL (__err);                                          \
      long int __ret;                                                         \
      __ret = INTERNAL_SYSCALL (futex, __err, 6,                                
      \
@@ -75,6 +85,83 @@
  
  static inline int __attribute__((always_inline))
  __lll_mutex_trylock(int *futex)
+@@ -88,8 +111,16 @@
+ }
+ #define lll_mutex_cond_trylock(lock)  __lll_mutex_cond_trylock (&(lock))
+ 
++static inline int __attribute__((always_inline))
++__lll_robust_mutex_trylock(int *futex, int id)
++{
++  return atomic_compare_and_exchange_val_acq (futex, id, 0) != 0;
++}
++#define lll_robust_mutex_trylock(lock, id) \
++  __lll_robust_mutex_trylock (&(lock), id)
+ 
+ extern void __lll_lock_wait (int *futex) attribute_hidden;
++extern int __lll_robust_lock_wait (int *futex) attribute_hidden;
+ 
+ static inline void __attribute__((always_inline))
+ __lll_mutex_lock(int *futex)
+@@ -99,6 +130,16 @@
+ }
+ #define lll_mutex_lock(futex) __lll_mutex_lock (&(futex))
+ 
++static inline int __attribute__ ((always_inline))
++__lll_robust_mutex_lock (int *futex, int id)
++{
++  int result = 0;
++  if (atomic_compare_and_exchange_bool_acq (futex, id, 0) != 0)
++    result = __lll_robust_lock_wait (futex);
++  return result;
++}
++#define lll_robust_mutex_lock(futex, id) \
++  __lll_robust_mutex_lock (&(futex), id)
+ 
+ static inline void __attribute__ ((always_inline))
+ __lll_mutex_cond_lock (int *futex)
+@@ -108,9 +149,13 @@
+ }
+ #define lll_mutex_cond_lock(futex) __lll_mutex_cond_lock (&(futex))
+ 
++#define lll_robust_mutex_cond_lock(futex, id) \
++  __lll_robust_mutex_lock (&(futex), (id) | FUTEX_WAITERS)
+ 
+ extern int __lll_timedlock_wait (int *futex, const struct timespec *)
+       attribute_hidden;
++extern int __lll_robust_timedlock_wait (int *futex, const struct timespec *)
++      attribute_hidden;
+ 
+ static inline int __attribute__ ((always_inline))
+ __lll_mutex_timedlock (int *futex, const struct timespec *abstime)
+@@ -123,6 +168,27 @@
+ #define lll_mutex_timedlock(futex, abstime) \
+   __lll_mutex_timedlock (&(futex), abstime)
+ 
++static inline int __attribute__ ((always_inline))
++__lll_robust_mutex_timedlock (int *futex, const struct timespec *abstime,
++                            int id)
++{
++  int result = 0;
++  if (atomic_compare_and_exchange_bool_acq (futex, id, 0) != 0)
++    result = __lll_robust_timedlock_wait (futex, abstime);
++  return result;
++}
++#define lll_robust_mutex_timedlock(futex, abstime, id) \
++  __lll_robust_mutex_timedlock (&(futex), abstime, id)
++
++static inline void __attribute__ ((always_inline))
++__lll_robust_mutex_unlock (int *futex, int mask)
++{
++  int val = atomic_exchange_rel (futex, 0);
++  if (__builtin_expect (val & mask, 0))
++    lll_futex_wake (futex, 1);
++}
++#define lll_robust_mutex_unlock(futex) \
++  __lll_robust_mutex_unlock(&(futex), FUTEX_WAITERS)
+ 
+ static inline void __attribute__ ((always_inline))
+ __lll_mutex_unlock (int *futex)
+
 diff -Naur 
glibc-20060206.orig/nptl/sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h 
glibc-20060206/nptl/sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h
 --- 
glibc-20060206.orig/nptl/sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h    
   1970-01-01 00:00:00.000000000 +0000
 +++ glibc-20060206/nptl/sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h    
2006-02-09 19:43:11.000000000 +0000

-- 
http://linuxfromscratch.org/mailman/listinfo/patches
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to