* sysdeps/unix/sysv/linux/alpha/select.S: Fix unwind. Propagate
authorrth <rth>
Sat, 13 Mar 2004 05:29:44 +0000 (05:29 +0000)
committerrth <rth>
Sat, 13 Mar 2004 05:29:44 +0000 (05:29 +0000)
        oldvalue from CENABLE to CDISABLE.

ChangeLog
sysdeps/unix/sysv/linux/alpha/select.S

index ffca858..82e3246 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-03-12  Richard Henderson  <rth@redhat.com>
+
+       * sysdeps/unix/sysv/linux/alpha/select.S: Fix unwind.  Propagate
+       oldvalue from CENABLE to CDISABLE.
+
 2004-03-12  Ulrich Drepper  <drepper@redhat.com>
 
        * sysdeps/unix/sysv/linux/x86_64/sysconf.c: New file.
index 4a0594c..458cda9 100644 (file)
@@ -53,6 +53,8 @@ LEAF(SELECT, 64)
        jsr     AT, (AT), _mcount
        .set at
 #endif
+       stq     ra, 40(sp)
+       .mask   0x4000000, 40-64
        .prologue 1
 
 #ifdef CENABLE
@@ -131,9 +133,9 @@ $do_cancel:
        stq     a1, 16(sp)
        stq     a2, 24(sp)
        stq     a3, 32(sp)
-       stq     ra, 40(sp)
 
        CENABLE
+       mov     v0, ra
 
        ldl     t0, __libc_missing_axp_tv64
        bne     t0, $do_cancel32
@@ -147,6 +149,8 @@ $do_cancel:
 
        ldi     v0, SYS_ify(select)
        callsys
+
+       mov     ra, a0
        bne     a3, $cancel_err64
 
        stq     v0, 8(sp)
@@ -184,6 +188,8 @@ $do_cancel32:
 
 1:     ldi     v0, SYS_ify(osf_select)
        callsys
+
+       mov     ra, a0
        bne     a3, $cancel_error
 
        /* ... and bounce the remaining timeout back.  */