[PATCH] PPC - fix pthread_once for nptl
Steven Munroe <[email protected]>
| Newsgroups | gmane.comp.lib.phil |
|---|---|
| Organization | IBM Linux Developement |
| Message-ID | <[email protected]> |
For PPC 32/64, pthread_once may fail if contention invalidates the reservation for once_control between the load-and_reserve and the Store_conditional. This code is missing a bne instruction to retry sequence if the store conditional fails. Thanks to Olof Jonansson for finding this one. 2003-07-21 Steven Munroe <[email protected]> * sysdeps/unix/sysv/linux/powerpc/pthread_once.c (pthread_once): Retry if the stwcx fails to store once_control. -- Steven Munroe [email protected] Linux on PowerPC-64 Development GLIBC for PowerPC-64 Development
ppc-pthread_once.patch
(text/plain, 560 B)
diff -urN nptl-0.53/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c libc23/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c --- nptl-0.53/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c 2003-03-20 03:57:06.000000000 -0600 +++ libc23/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c 2003-07-21 12:42:14.000000000 -0500 @@ -55,6 +55,7 @@ " andi. %1,%0,2\n" " bne 2f\n" " stwcx. %4,0,%3\n" + " bne 1b\n" "2: isync" : "=&r" (oldval), "=&r" (tmp), "=m" (*once_control) : "r" (once_control), "r" (newval), "m" (*once_control)