Update.
2003-05-30 Jakub Jelinek <jakub@redhat.com> * sysdeps/powerpc/powerpc32/elf/start.S: Make code compilable with SHARED.
This commit is contained in:
parent
e7c5ac68ed
commit
284bdc42e8
@ -1,3 +1,8 @@
|
||||
2003-05-30 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* sysdeps/powerpc/powerpc32/elf/start.S: Make code compilable with
|
||||
SHARED.
|
||||
|
||||
2003-05-11 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* Makerules: Always use -MP together with -MD.
|
||||
|
@ -3,6 +3,17 @@
|
||||
* sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_requeue):
|
||||
Find break parameter in correct asm argument.
|
||||
|
||||
2003-05-27 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_clobbers):
|
||||
Remove out4.
|
||||
(lll_futex_requeue): Fix __o3 constraint, return negative errno if
|
||||
error occured.
|
||||
* sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h (pthread_cond_t):
|
||||
Add __mutex.
|
||||
* sysdeps/unix/sysv/linux/s390/lowlevellock.h (FUTEX_REQUEUE,
|
||||
lll_futex_requeue, lll_mutex_unlock_force): Define.
|
||||
|
||||
2003-05-30 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
|
||||
|
@ -92,6 +92,7 @@ typedef union
|
||||
unsigned long long int __total_seq;
|
||||
unsigned long long int __wakeup_seq;
|
||||
unsigned long long int __woken_seq;
|
||||
void *__mutex;
|
||||
} __data;
|
||||
char __size[__SIZEOF_PTHREAD_COND_T];
|
||||
long long int __align;
|
||||
|
@ -27,6 +27,7 @@
|
||||
#define SYS_futex 238
|
||||
#define FUTEX_WAIT 0
|
||||
#define FUTEX_WAKE 1
|
||||
#define FUTEX_REQUEUE 3
|
||||
|
||||
/* Initializer for compatibility lock. */
|
||||
#define LLL_MUTEX_LOCK_INITIALIZER (0)
|
||||
@ -80,6 +81,24 @@
|
||||
})
|
||||
|
||||
|
||||
#define lll_futex_requeue(futex, nr_wake, nr_move, mutex) \
|
||||
({ \
|
||||
register unsigned long int __r2 asm ("2") = (unsigned long int) (futex); \
|
||||
register unsigned long int __r3 asm ("3") = FUTEX_REQUEUE; \
|
||||
register unsigned long int __r4 asm ("4") = (long int) (nr_wake); \
|
||||
register unsigned long int __r5 asm ("5") = (long int) (nr_move); \
|
||||
register unsigned long int __r6 asm ("6") = (unsigned long int) (mutex); \
|
||||
register unsigned long __result asm ("2"); \
|
||||
\
|
||||
__asm __volatile ("svc %b1" \
|
||||
: "=d" (__result) \
|
||||
: "i" (SYS_futex), "0" (__r2), "d" (__r3), \
|
||||
"d" (__r4), "d" (__r5), "d" (__r6) \
|
||||
: "cc", "memory" ); \
|
||||
__result; \
|
||||
})
|
||||
|
||||
|
||||
#define lll_compare_and_swap(futex, oldval, newval, operation) \
|
||||
do { \
|
||||
__typeof (futex) __futex = (futex); \
|
||||
@ -157,7 +176,11 @@ __lll_mutex_unlock (int *futex)
|
||||
if (oldval > 1)
|
||||
lll_futex_wake (futex, 1);
|
||||
}
|
||||
#define lll_mutex_unlock(futex) __lll_mutex_unlock(&(futex))
|
||||
#define lll_mutex_unlock(futex) \
|
||||
__lll_mutex_unlock(&(futex))
|
||||
|
||||
#define lll_mutex_unlock_force(futex) \
|
||||
lll_futex_wake (&(futex), 1)
|
||||
|
||||
#define lll_mutex_islocked(futex) \
|
||||
(futex != 0)
|
||||
|
Loading…
Reference in New Issue
Block a user