(PSEUDO): Setup backchain in pseudo_cancel. Minor code improvements.
authordrepper <drepper>
Sun, 12 Jan 2003 23:02:55 +0000 (23:02 +0000)
committerdrepper <drepper>
Sun, 12 Jan 2003 23:02:55 +0000 (23:02 +0000)
linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h

index 753fdd9..9e856a4 100644 (file)
@@ -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;                                          \
index 0e3daa5..19ecee8 100644 (file)
@@ -39,16 +39,18 @@ ENTRY(name)                                                               \
 L(pseudo_cancel):                                                            \
        STM_##args                                                            \
        stmg    %r13,%r15,104(%r15);                                          \
-       aghi    %r15,-192;                                                    \
+       lgr     %r14,%r15;                                                    \
+       aghi    %r15,-160;                                                    \
+       stg     %r14,0(%r15);                                                 \
        brasl   %r14,CENABLE;                                                 \
-       l     %r0,%r2;                                                      \
+       lgr     %r0,%r2;                                                      \
        LM_##args                                                             \
        DO_CALL(syscall_name, args);                                          \
        lgr     %r13,%r2;                                                     \
-       l     %r2,%r0;                                                      \
+       lgr     %r2,%r0;                                                      \
        brasl   %r14,CDISABLE;                                                \
        lgr     %r2,%r13;                                                     \
-       lmg     %r13,%r15,104+192(%r15);                                      \
+       lmg     %r13,%r15,104+160(%r15);                                      \
        lghi    %r4,-4095;                                                    \
        clgr    %r2,%r4;                                                      \
        jnl     SYSCALL_ERROR_LABEL;                                          \
@@ -72,11 +74,11 @@ L(pseudo_end):
 #define STM_5          stmg %r2,%r5,16(%r15);
 
 #define LM_0           /* Nothing */
-#define LM_1           lg %r2,16+192(%r15);
-#define LM_2           lmg %r2,%r3,16+192(%r15);
-#define LM_3           lmg %r2,%r4,16+192(%r15);
-#define LM_4           lmg %r2,%r5,16+192(%r15);
-#define LM_5           lmg %r2,%r5,16+192(%r15);
+#define LM_1           lg %r2,16+160(%r15);
+#define LM_2           lmg %r2,%r3,16+160(%r15);
+#define LM_3           lmg %r2,%r4,16+160(%r15);
+#define LM_4           lmg %r2,%r5,16+160(%r15);
+#define LM_5           lmg %r2,%r5,16+160(%r15);
 
 # ifndef __ASSEMBLER__
 extern int __local_multiple_threads attribute_hidden;