* sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: Propagate
authorRichard Henderson <rth@redhat.com>
Sat, 13 Mar 2004 05:29:24 +0000 (05:29 +0000)
committerRichard Henderson <rth@redhat.com>
Sat, 13 Mar 2004 05:29:24 +0000 (05:29 +0000)
        oldvalue from CENABLE to CDISABLE.

sysdeps/unix/sysv/linux/alpha/nptl/sysdep-cancel.h

index 3b08b22..794d7fc 100644 (file)
@@ -63,9 +63,14 @@ __LABEL($pseudo_cancel)                                              \
        SAVE_ARGS_##args;                                       \
        CENABLE;                                                \
        LOAD_ARGS_##args;                                       \
+       /* Save the CENABLE return value in RA.  That register  \
+          is preserved across syscall and the real return      \
+          address is saved on the stack.  */                   \
+       mov     v0, ra;                                         \
        lda     v0, SYS_ify(syscall_name);                      \
        call_pal PAL_callsys;                                   \
        stq     v0, 8(sp);                                      \
+       mov     ra, a0;                                         \
        bne     a3, $multi_error;                               \
        CDISABLE;                                               \
        ldq     ra, 0(sp);                                      \