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>
|
2014-07-10 Roland McGrath <roland@hack.frob.com>
|
||||||
|
|
||||||
* nptl/pthread_create.c (start_thread): Use atomic_or and
|
* nptl/pthread_create.c (start_thread): Use atomic_or and
|
||||||
|
@ -190,13 +190,28 @@
|
|||||||
# endif
|
# endif
|
||||||
#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 */
|
/* 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))
|
#define lll_trylock(lock) __lll_trylock (&(lock))
|
||||||
|
|
||||||
/* Set *futex to 2 if it is 0, atomically. Returns the old value */
|
/* 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))
|
#define lll_cond_trylock(lock) __lll_cond_trylock (&(lock))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user