about summary refs log tree commit diff
path: root/ChangeLog
diff options
context:
space:
mode:
authorAdhemerval Zanella <azanella@linux.vnet.ibm.com>2014-11-07 12:34:52 -0500
committerAdhemerval Zanella <azanella@linux.vnet.ibm.com>2015-01-12 06:32:08 -0500
commit56cf2763819d2f721c98f2b8bcc04a3c673837d3 (patch)
tree5d2fde37897779f64b83951c1ef99406fd384055 /ChangeLog
parent4b45943a6f62cfc239e79ad8902f5c7f71fd13ec (diff)
downloadglibc-56cf2763819d2f721c98f2b8bcc04a3c673837d3.tar.gz
glibc-56cf2763819d2f721c98f2b8bcc04a3c673837d3.tar.xz
glibc-56cf2763819d2f721c98f2b8bcc04a3c673837d3.zip
powerpc: abort transaction in syscalls
Linux kernel powerpc documentation states issuing a syscall inside a
transaction is not recommended and may lead to undefined behavior. It
also states syscalls does not abort transactoin neither they run in
transactional state.

To avoid side-effects being visible outside transactions, GLIBC with
lock elision enabled will issue a transaction abort instruction just
before all syscalls if hardware supports hardware transactions.
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog17
1 files changed, 17 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 6737953b3c..093be37e30 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,22 @@
 2014-01-12  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
 
+	* sysdeps/powerpc/nptl/tls.h (tcbhead_t): Add tm_capable field.
+	(TLS_INIT_TP): Add tm_capable initialization.
+	(TLS_DEFINE_INIT_TP): Likewise.
+	(THREAD_GET_TM_CAPABLE): New file: get tm_capable field value from
+	TCB.
+	(THREAD_SET_TM_CAPABLE): New file: set tm_capable field value in TCB.
+	* sysdeps/powerpc/nptl/tcb-offsets.sym (TM_CAPABLE): Add field offset
+	calculation.
+	* sysdeps/powerpc/powerpc32/sysdep.h (DO_CALL): Abort hardware
+	transactoion is lock elision is built and TCB tm_capable is set.
+	* sysdeps/powerpc/powerpc64/sysdep.h (DO_CALL): Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
+	(INTERNAL_SYSCALL_NCS): Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
+	(INTERNAL_SYSCALL_NCS): Likewise.
+	* sysdeps/powerpc/sysdep.h (ABORT_TRANSACTION): New define.
+
 	* sysdeps/powerpc/nptl/elide.h: New file: generic lock elision support
 	for powerpc.
 	* sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h