From a5e72ef81aad6662c1281bc0df26f55c23a419dd Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sat, 13 Mar 2004 05:29:24 +0000 Subject: [PATCH] * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: Propagate oldvalue from CENABLE to CDISABLE. --- sysdeps/unix/sysv/linux/alpha/nptl/sysdep-cancel.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sysdeps/unix/sysv/linux/alpha/nptl/sysdep-cancel.h b/sysdeps/unix/sysv/linux/alpha/nptl/sysdep-cancel.h index 3b08b22..794d7fc 100644 --- a/sysdeps/unix/sysv/linux/alpha/nptl/sysdep-cancel.h +++ b/sysdeps/unix/sysv/linux/alpha/nptl/sysdep-cancel.h @@ -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); \ -- 2.7.4