aboutsummaryrefslogtreecommitdiff
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
glibc-56cf2763819d2f721c98f2b8bcc04a3c673837d3.tar.gz
glibc-56cf2763819d2f721c98f2b8bcc04a3c673837d3.tar.bz2
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