mirror of
git://sourceware.org/git/glibc.git
synced 2025-04-12 14:21:18 +08:00
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.
This commit is contained in:
parent
fe7faec3e5
commit
18173559a2
@ -1,3 +1,11 @@
|
||||
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.
|
||||
|
||||
2015-08-25 Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
|
||||
|
||||
* sysdeps/powerpc/powerpc64/power7/strstr.S: Handle worst case.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include <sysdep.h>
|
||||
|
||||
ENTRY (syscall)
|
||||
ABORT_TRANSACTION
|
||||
mr r0,r3
|
||||
mr r3,r4
|
||||
mr r4,r5
|
||||
|
Loading…
x
Reference in New Issue
Block a user