File powerpc-tabort-usage.patch of Package glibc
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.
Index: glibc-2.22/sysdeps/powerpc/powerpc32/sysdep.h
===================================================================
--- glibc-2.22.orig/sysdeps/powerpc/powerpc32/sysdep.h
+++ glibc-2.22/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
Index: glibc-2.22/sysdeps/powerpc/powerpc64/sysdep.h
===================================================================
--- glibc-2.22.orig/sysdeps/powerpc/powerpc64/sysdep.h
+++ glibc-2.22/sysdeps/powerpc/powerpc64/sysdep.h
@@ -279,8 +279,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
Index: glibc-2.22/sysdeps/unix/sysv/linux/powerpc/syscall.S
===================================================================
--- glibc-2.22.orig/sysdeps/unix/sysv/linux/powerpc/syscall.S
+++ glibc-2.22/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