mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-24 11:41:07 +00:00
PowerPC: Fix build due missing lll_robust_trylock
Commit 887865f
remove the lll_robust_trylock definition on all
architectures, however for powerpc both __lll_trylock and
__lll_cond_trylock were based on lll_robust_trylock definition.
This patch restore it with a different name.
This commit is contained in:
parent
6a42be57e8
commit
bc1da1765e
@ -1,3 +1,10 @@
|
||||
2014-07-10 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (__lll_base_trylock):
|
||||
New define.
|
||||
(__lll_trylock): Use __lll_base_trylock.
|
||||
(__lll_cond_trylock): Likewise.
|
||||
|
||||
2014-07-10 Roland McGrath <roland@hack.frob.com>
|
||||
|
||||
* nptl/pthread_create.c (start_thread): Use atomic_or and
|
||||
|
@ -190,13 +190,28 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Set *futex to ID if it is 0, atomically. Returns the old value */
|
||||
#define __lll_base_trylock(futex, id) \
|
||||
({ int __val; \
|
||||
__asm __volatile ("1: lwarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
|
||||
" cmpwi 0,%0,0\n" \
|
||||
" bne 2f\n" \
|
||||
" stwcx. %3,0,%2\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " __lll_acq_instr \
|
||||
: "=&r" (__val), "=m" (*futex) \
|
||||
: "r" (futex), "r" (id), "m" (*futex) \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
|
||||
/* Set *futex to 1 if it is 0, atomically. Returns the old value */
|
||||
#define __lll_trylock(futex) __lll_robust_trylock (futex, 1)
|
||||
#define __lll_trylock(futex) __lll_base_trylock (futex, 1)
|
||||
|
||||
#define lll_trylock(lock) __lll_trylock (&(lock))
|
||||
|
||||
/* Set *futex to 2 if it is 0, atomically. Returns the old value */
|
||||
#define __lll_cond_trylock(futex) __lll_robust_trylock (futex, 2)
|
||||
#define __lll_cond_trylock(futex) __lll_base_trylock (futex, 2)
|
||||
|
||||
#define lll_cond_trylock(lock) __lll_cond_trylock (&(lock))
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user