glibc/sysdeps/unix
Paul Murphy 9695cb3e65 powerpc: Spinlock optimization and cleanup
This patch optimizes powerpc spinlock implementation by:

* Use the correct EH hint bit on the larx for supported ISA.  For lock
  acquisition, the thread that acquired the lock with a successful stcx
  does not want to give away the write ownership on the cacheline.  The
  idea is to make the load reservation "sticky" about retaining write
  authority to the line.  That way, the store that must inevitably come
  to release the lock can succeed quickly and not contend with other
  threads issuing lwarx.  If another thread does a store to the line
  (false sharing), the winning thread must give up write authority to
  the proper value of EH for the larx for a lock acquisition is 1.

* Increase contented lock performance by up to 40%, and no measurable
  impact on uncontended locks on P8.

Thanks to Adhemerval Zanella who did most of the work.  I've run some
tests, and addressed some minor feedback.

	* sysdeps/powerpc/nptl/pthread_spin_lock.c (pthread_spin_lock):
	Add lwarx hint, and use macro for acquire instruction.
	* sysdeps/powerpc/nptl/pthread_spin_trylock.c (pthread_spin_trylock):
	Likewise.
	* sysdep/unix/sysv/linux/powerpc/pthread_spin_unlock.c: Move to ...
	* sysdeps/powerpc/nptl/pthread_spin_unlock.c: ... here, and
	update to use new atomic macros.
2015-11-19 18:04:30 -02:00
..
alpha alpha: Unconditionally include dl-sysdep.h in sysdep.h 2015-04-06 10:36:44 -07:00
arm Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
bsd Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
i386 Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
inet
mips MIPS: Only use .set mips* assembler directives when necessary 2015-09-08 16:52:43 +01:00
powerpc Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sh Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sysv/linux powerpc: Spinlock optimization and cleanup 2015-11-19 18:04:30 -02:00
x86_64 Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
clock_gettime.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
clock_nanosleep.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
clock_settime.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
confstr.h
get_child_max.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
getlogin_r.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
getlogin.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
getpagesize.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
grantpt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ifreq.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Implies
make-syscalls.sh Create hidden aliases for non-libc syscalls automatically. 2015-06-17 20:17:49 +00:00
Makefile Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s-proto-cancel.S
s-proto.S
setxid.h
sockatmark.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
stime.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
syscall-template.S Create hidden aliases for non-libc syscalls automatically. 2015-06-17 20:17:49 +00:00
syscall.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
syscalls.list Fix nice getpriority, setpriority namespace (bug 18553). 2015-06-17 20:22:39 +00:00
sysdep.h Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN" 2015-08-21 09:57:15 -07:00