glibc/sysdeps/x86
Torvald Riegel ca6e601a9d Use C11-like atomics instead of plain memory accesses in x86 lock elision.
This uses atomic operations to access lock elision metadata that is accessed
concurrently (ie, adapt_count fields).  The size of the data is less than a
word but accessed only with atomic loads and stores; therefore, we add
support for shorter-size atomic load and stores too.

	* include/atomic.h (__atomic_check_size_ls): New.
	(atomic_load_relaxed, atomic_load_acquire, atomic_store_relaxed,
	atomic_store_release): Use it.
	* sysdeps/x86/elide.h (ACCESS_ONCE): Remove.
	(elision_adapt, ELIDE_LOCK): Use atomics.
	* sysdeps/unix/sysv/linux/x86/elision-lock.c (__lll_lock_elision): Use
	atomics and improve code comments.
	* sysdeps/unix/sysv/linux/x86/elision-trylock.c
	(__lll_trylock_elision): Likewise.
2016-12-05 16:19:43 +01:00
..
bits Refactor FP_ILOGB* out of bits/mathdef.h. 2016-12-01 02:56:55 +00:00
fpu Fix x86_64 -mfpmath=387 float_t, double_t (bug 20787). 2016-11-23 17:56:31 +00:00
cacheinfo.c X86: Don't assert on older Intel CPUs [BZ #20647] 2016-10-12 08:22:52 -07:00
cpu-features-offsets.sym Remove x86 ifunc-defines.sym and rtld-global-offsets.sym 2016-05-11 05:51:39 -07:00
cpu-features.c Bug 20689: Fix FMA and AVX2 detection on Intel 2016-10-17 19:39:54 -04:00
cpu-features.h X86-64: Add _dl_runtime_resolve_avx[512]_{opt|slow} [BZ #20508] 2016-09-06 08:51:07 -07:00
dl-get-cpu-features.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
elide.h Use C11-like atomics instead of plain memory accesses in x86 lock elision. 2016-12-05 16:19:43 +01:00
fpu_control.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
init-arch.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
libc-start.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
linkmap.h Rename bits/linkmap.h to linkmap.h (bug 14912). 2015-09-04 19:44:27 +00:00
Makefile Remove x86 ifunc-defines.sym and rtld-global-offsets.sym 2016-05-11 05:51:39 -07:00
string_private.h Add _STRING_INLINE_unaligned and string_private.h 2016-02-18 14:55:29 -02:00
tininess.h Use sysdeps/x86/tininess.h for i386 and x86_64 2012-10-30 20:38:31 -07:00
tst-get-cpu-features-static.c Add _dl_x86_cpu_features to rtld_global 2015-08-13 03:41:22 -07:00
tst-get-cpu-features.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
Versions Add _dl_x86_cpu_features to rtld_global 2015-08-13 03:41:22 -07:00