mirror of git://sourceware.org/git/glibc.git
(lll_futex_requeue): Pass val argument as 6th system call argument in %r7.
This commit is contained in:
parent
c889f2cd0e
commit
34dd1fb346
|
@ -84,9 +84,6 @@
|
||||||
|
|
||||||
|
|
||||||
/* Returns non-zero if error happened, zero if success. */
|
/* Returns non-zero if error happened, zero if success. */
|
||||||
#if 0
|
|
||||||
/* FIXME: s390 only supports up to 5 argument syscalls. Once FUTEX_CMP_REQUEUE
|
|
||||||
kernel interface for s390 is finalized, adjust this. */
|
|
||||||
#define lll_futex_requeue(futex, nr_wake, nr_move, mutex, val) \
|
#define lll_futex_requeue(futex, nr_wake, nr_move, mutex, val) \
|
||||||
({ \
|
({ \
|
||||||
register unsigned long int __r2 asm ("2") = (unsigned long int) (futex); \
|
register unsigned long int __r2 asm ("2") = (unsigned long int) (futex); \
|
||||||
|
@ -94,18 +91,16 @@
|
||||||
register unsigned long int __r4 asm ("4") = (long int) (nr_wake); \
|
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 __r5 asm ("5") = (long int) (nr_move); \
|
||||||
register unsigned long int __r6 asm ("6") = (unsigned long int) (mutex); \
|
register unsigned long int __r6 asm ("6") = (unsigned long int) (mutex); \
|
||||||
|
register unsigned long int __r7 asm ("7") = (int) (mutex); \
|
||||||
register unsigned long __result asm ("2"); \
|
register unsigned long __result asm ("2"); \
|
||||||
\
|
\
|
||||||
__asm __volatile ("svc %b1" \
|
__asm __volatile ("svc %b1" \
|
||||||
: "=d" (__result) \
|
: "=d" (__result) \
|
||||||
: "i" (SYS_futex), "0" (__r2), "d" (__r3), \
|
: "i" (SYS_futex), "0" (__r2), "d" (__r3), \
|
||||||
"d" (__r4), "d" (__r5), "d" (__r6) \
|
"d" (__r4), "d" (__r5), "d" (__r6), "d" (__r7) \
|
||||||
: "cc", "memory" ); \
|
: "cc", "memory" ); \
|
||||||
__result > -4096UL; \
|
__result > -4096UL; \
|
||||||
})
|
})
|
||||||
#else
|
|
||||||
#define lll_futex_requeue(futex, nr_wake, nr_move, mutex, val) 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#define lll_compare_and_swap(futex, oldval, newval, operation) \
|
#define lll_compare_and_swap(futex, oldval, newval, operation) \
|
||||||
|
|
Loading…
Reference in New Issue