aboutsummaryrefslogtreecommitdiff
path: root/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
diff options
context:
space:
mode:
Diffstat (limited to 'linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h')
-rw-r--r--linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h17
1 files changed, 9 insertions, 8 deletions
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h b/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
index 753fdd93f5..9e856a4d0e 100644
--- a/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
+++ b/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
@@ -38,21 +38,22 @@ ENTRY(name) \
br %r14; \
L(pseudo_cancel): \
STM_##args \
- stm %r13,%r15,52(%r15); \
+ stm %r12,%r15,48(%r15); \
+ lr %r14,%r15; \
ahi %r15,-96; \
+ st %r14,0(%r15); \
basr %r13,0; \
200301: l %r1,200302f-200301b(%r13); \
- bas %r14,0(%r13,%r1); \
+ bas %r14,0(%r1,%r13); \
lr %r0,%r2; \
LM_##args \
DO_CALL(syscall_name, args); \
- l %r3,200303f-200301b(%r13); \
- lr %r4,%r13; \
- lr %r13,%r2; \
+ l %r1,200303f-200301b(%r13); \
+ lr %r12,%r2; \
lr %r2,%r0; \
- bas %r14,0(%r4,%r3); \
- lr %r2,%r13; \
- lm %r13,%r15,52+96(%r15); \
+ bas %r14,0(%r1,%r13); \
+ lr %r2,%r12; \
+ lm %r12,%r15,48+96(%r15); \
lhi %r4,-4095; \
clr %r2,%r4; \
jnl SYSCALL_ERROR_LABEL; \