[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)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.