diff options
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h index f51f650927..f665ac9e6b 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h +++ b/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h @@ -224,20 +224,21 @@ LLL_STUB_UNWIND_INFO_END #define lll_futex_wake(futex, nr, private) \ - do { \ - int __ignore; \ + ({ \ + int __status; \ register __typeof (nr) _nr asm ("edx") = (nr); \ LIBC_PROBE (lll_futex_wake, 3, futex, nr, private); \ __asm __volatile (LLL_EBX_LOAD \ LLL_ENTER_KERNEL \ LLL_EBX_LOAD \ - : "=a" (__ignore) \ + : "=a" (__status) \ : "0" (SYS_futex), LLL_EBX_REG (futex), \ "c" (__lll_private_flag (FUTEX_WAKE, private)), \ "d" (_nr), \ "i" (0) /* phony, to align next arg's number */, \ "i" (offsetof (tcbhead_t, sysinfo))); \ - } while (0) + __status; \ + }) /* NB: in the lll_trylock macro we simply return the value in %eax |