This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch ibm/2.20/master updated. glibc-2.20-55-g0d210b1


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, ibm/2.20/master has been updated
       via  0d210b124d0211717c392dab3208fc49b0bb0ed6 (commit)
       via  d8d584d4c38e8fd5d641937aff7fa2303bbee314 (commit)
      from  0a512fb591621e2c26efaf5ecc95e87763978386 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=0d210b124d0211717c392dab3208fc49b0bb0ed6

commit 0d210b124d0211717c392dab3208fc49b0bb0ed6
Author: Paul E. Murphy <murphyp@linux.vnet.ibm.com>
Date:   Fri Aug 21 14:39:01 2015 -0500

    powerpc: Fix tabort usage in syscalls
    
    Fix usage of tabort in generated syscalls.  r0 has special meaning
    when used with this instruction, thus it will not generate
    persistent errors, nor return an error code.  This mitigates poor
    CPU usage when performing elided critical sections.
    
    Additionally, transactions should be aborted when entering a user
    invoked syscall.  Otherwise the results of the transaction may be
    undefined.
    
    2015-08-25  Paul E. Murphy  <murphyp@linux.vnet.ibm.com>
    
    	* sysdeps/powerpc/powerpc32/sysdep.h (ABORT_TRANSACTION): Use
    	register other than r0 for tabort, it has special meaning.
    	* sysdeps/powerpc/powerpc64/sysdep.h (ABORT_TRANSACTION): Likewise
    	* sysdeps/unix.sysv/linux/powerpc/syscall.S (syscall): Abort
    	transaction before starting syscall.
    
    (cherry picked from commit 18173559a23e28055640b152e623d9f0d40ecca8)

diff --git a/ChangeLog b/ChangeLog
index 8396a46..a3173c6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2015-09-01  Paul E. Murphy  <murphyp@linux.vnet.ibm.com>
 
+	* sysdeps/powerpc/powerpc32/sysdep.h (ABORT_TRANSACTION): Use
+	register other than r0 for tabort, it has special meaning.
+	* sysdeps/powerpc/powerpc64/sysdep.h (ABORT_TRANSACTION): Likewise
+	* sysdeps/unix.sysv/linux/powerpc/syscall.S (syscall): Abort
+	transaction before starting syscall.
+
+2015-09-01  Paul E. Murphy  <murphyp@linux.vnet.ibm.com>
+
 	* sysdeps/unix/sysv/linux/powerpc/elision-lock.c
 	(__arch_compare_and_exchange_val_32_acq): Remove and use common
 	definition.  ISA 2.07B no longer requires full sync.
diff --git a/sysdeps/powerpc/powerpc32/sysdep.h b/sysdeps/powerpc/powerpc32/sysdep.h
index c4b3ca8..261ca5f 100644
--- a/sysdeps/powerpc/powerpc32/sysdep.h
+++ b/sysdeps/powerpc/powerpc32/sysdep.h
@@ -95,8 +95,8 @@ GOT_LABEL:			;					      \
     lwz      0,TM_CAPABLE(2);	\
     cmpwi    0,0;		\
     beq	     1f;		\
-    li	     0,_ABORT_SYSCALL;	\
-    tabort.  0;			\
+    li       11,_ABORT_SYSCALL;	\
+    tabort.  11;		\
     .align 4;			\
 1:
 #else
diff --git a/sysdeps/powerpc/powerpc64/sysdep.h b/sysdeps/powerpc/powerpc64/sysdep.h
index 78722c6..1636899 100644
--- a/sysdeps/powerpc/powerpc64/sysdep.h
+++ b/sysdeps/powerpc/powerpc64/sysdep.h
@@ -290,8 +290,8 @@ LT_LABELSUFFIX(name,_name_end): ; \
     lwz      0,TM_CAPABLE(13);	\
     cmpwi    0,0;		\
     beq	     1f;		\
-    li	     0,_ABORT_SYSCALL;	\
-    tabort.  0;			\
+    li       11,_ABORT_SYSCALL;	\
+    tabort.  11;		\
     .align 4;                   \
 1:
 #else
diff --git a/sysdeps/unix/sysv/linux/powerpc/syscall.S b/sysdeps/unix/sysv/linux/powerpc/syscall.S
index 346e962..d78eee7 100644
--- a/sysdeps/unix/sysv/linux/powerpc/syscall.S
+++ b/sysdeps/unix/sysv/linux/powerpc/syscall.S
@@ -18,6 +18,7 @@
 #include <sysdep.h>
 
 ENTRY (syscall)
+	ABORT_TRANSACTION
 	mr   r0,r3
 	mr   r3,r4
 	mr   r4,r5

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=d8d584d4c38e8fd5d641937aff7fa2303bbee314

commit d8d584d4c38e8fd5d641937aff7fa2303bbee314
Author: Paul E. Murphy <murphyp@linux.vnet.ibm.com>
Date:   Thu Aug 13 16:21:05 2015 -0500

    powerpc: Revert to default atomic ops in elision code
    
    Power ISA 2.07B section B.5.5 relaxed the barrier requirement around a
    TLE enabled lock.  It is now identical to a traditional lock.
    
    2015-08-26  Paul E. Murphy  <murphyp@linux.vnet.ibm.com>
    
    	* sysdeps/unix/sysv/linux/powerpc/elision-lock.c
    	(__arch_compare_and_exchange_val_32_acq): Remove and use common
    	definition.  ISA 2.07B no longer requires full sync.
    
    (cherry picked from commit 6eb901de9b8c3a582ec2a5fc9a2223f326800812)

diff --git a/ChangeLog b/ChangeLog
index f57928e..8396a46 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2015-09-01  Paul E. Murphy  <murphyp@linux.vnet.ibm.com>
+
+	* sysdeps/unix/sysv/linux/powerpc/elision-lock.c
+	(__arch_compare_and_exchange_val_32_acq): Remove and use common
+	definition.  ISA 2.07B no longer requires full sync.
+
 2015-05-11  Andreas Schwab  <schwab@suse.de>
 
 	[BZ #18007]
diff --git a/sysdeps/unix/sysv/linux/powerpc/elision-lock.c b/sysdeps/unix/sysv/linux/powerpc/elision-lock.c
index 2ce75b2..8c13a29 100644
--- a/sysdeps/unix/sysv/linux/powerpc/elision-lock.c
+++ b/sysdeps/unix/sysv/linux/powerpc/elision-lock.c
@@ -23,27 +23,6 @@
 #include <elision-conf.h>
 #include "htm.h"
 
-/* PowerISA 2.0.7 Section B.5.5 defines isync to be insufficient as a
-   barrier in acquire mechanism for HTM operations, a strong 'sync' is
-   required.  */
-#undef __arch_compare_and_exchange_val_32_acq
-#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval)           \
-  ({                                                                          \
-      __typeof (*(mem)) __tmp;                                                \
-      __typeof (mem)  __memp = (mem);                                         \
-      __asm __volatile (                                                      \
-                        "1:     lwarx   %0,0,%1" MUTEX_HINT_ACQ "\n"          \
-                        "       cmpw    %0,%2\n"                              \
-                        "       bne     2f\n"                                 \
-                        "       stwcx.  %3,0,%1\n"                            \
-                        "       bne-    1b\n"                                 \
-                        "2:     sync"                                         \
-                        : "=&r" (__tmp)                                       \
-                        : "b" (__memp), "r" (oldval), "r" (newval)            \
-                        : "cr0", "memory");                                   \
-      __tmp;                                                                  \
-  })
-
 #if !defined(LLL_LOCK) && !defined(EXTRAARG)
 /* Make sure the configuration code is always linked in for static
    libraries.  */

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                      |   14 ++++++++++++++
 sysdeps/powerpc/powerpc32/sysdep.h             |    4 ++--
 sysdeps/powerpc/powerpc64/sysdep.h             |    4 ++--
 sysdeps/unix/sysv/linux/powerpc/elision-lock.c |   21 ---------------------
 sysdeps/unix/sysv/linux/powerpc/syscall.S      |    1 +
 5 files changed, 19 insertions(+), 25 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]