Update.
authorUlrich Drepper <drepper@redhat.com>
Thu, 27 Mar 2003 19:51:26 +0000 (19:51 +0000)
committerUlrich Drepper <drepper@redhat.com>
Thu, 27 Mar 2003 19:51:26 +0000 (19:51 +0000)
2003-03-27  David Mosberger  <davidm@hpl.hp.com>

* sysdeps/unix/sysv/linux/ia64/getcontext.S: Restore caller's
ar.unat before returning.  Add missing .mem.offset directives
to ensure file gets assembled without warnings.
* sysdeps/unix/sysv/linux/ia64/setjmp.S: Likewise.

ChangeLog
nptl/ChangeLog
nptl/sysdeps/unix/sysv/linux/timer_getoverr.c
sysdeps/unix/sysv/linux/ia64/getcontext.S
sysdeps/unix/sysv/linux/ia64/setjmp.S

index bf4807d..553371a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2003-03-27  David Mosberger  <davidm@hpl.hp.com>
+
+       * sysdeps/unix/sysv/linux/ia64/getcontext.S: Restore caller's
+       ar.unat before returning.  Add missing .mem.offset directives
+       to ensure file gets assembled without warnings.
+       * sysdeps/unix/sysv/linux/ia64/setjmp.S: Likewise.
+
 2003-03-27  Jakub Jelinek  <jakub@redhat.com>
 
        * sysdeps/unix/sysv/linux/sysconf.c (__sysconf) <_SC_MONOTONIC_CLOCK>:
index 5571d42..fb404d9 100644 (file)
@@ -6,6 +6,8 @@
 
        * sysdeps/unix/sysv/linux/timer_settime.c [!__ASSUME_POSIX_TIMERS]
        (timer_settime): Fix typo.
+       * sysdeps/unix/sysv/linux/timer_getoverr.c
+       [!__ASSUME_POSIX_TIMERS] (timer_getoverrun): Likewise.
 
 2003-03-27  Jakub Jelinek  <jakub@redhat.com>
 
index 247f4a3..32fbfbd 100644 (file)
@@ -42,7 +42,7 @@ timer_getoverrun (timerid)
 {
 # undef timer_getoverrun
 # ifndef __ASSUME_POSIX_TIMERS
-  if (__no_posix_timers == 0)
+  if (__no_posix_timers >= 0)
 # endif
     {
       struct timer *kt = (struct timer *) timerid;
index e396480..f58e84f 100644 (file)
@@ -34,6 +34,7 @@
   other than the PRESERVED state.  */
 
 ENTRY(__getcontext)
+       .prologue
        alloc r16 = ar.pfs, 1, 0, 3, 0
 
        // sigprocmask (SIG_BLOCK, NULL, &sc->sc_mask):
@@ -53,7 +54,9 @@ ENTRY(__getcontext)
        add r2 = SC_GR+1*8, r32
        ;;
        mov.m rBSP = ar.bsp
+       .save ar.unat, rUNAT
        mov.m rUNAT = ar.unat
+       .body
        add r3 = SC_GR+4*8, r32
        ;;
 
@@ -65,8 +68,8 @@ ENTRY(__getcontext)
 .mem.offset 8,0; st8.spill [r3] = r6, 48
        and rTMP = ~0x3, rRSC
        ;;
-       st8.spill [r2] = r7, (SC_FR+2*16-(SC_GR+7*8))
-       st8.spill [r3] = sp, (SC_FR+3*16-(SC_GR+12*8))
+.mem.offset 0,0; st8.spill [r2] = r7, (SC_FR+2*16-(SC_GR+7*8))
+.mem.offset 8,0; st8.spill [r3] = sp, (SC_FR+3*16-(SC_GR+12*8))
        ;;
        mov.m ar.rsc = rTMP             // put RSE into enforced lazy mode
        mov.m rNAT = ar.unat
@@ -119,8 +122,8 @@ ENTRY(__getcontext)
        stf.spill [r3] = f31, 32
        mov rB1 = b1
        ;;
+       mov ar.unat = rUNAT     // we're done spilling integer regs; restore caller's UNaT
        add r2 = SC_NAT, r32
-       nop 0
        add r3 = SC_BSP, r32
        ;;
        st8 [r2] = rNAT, (SC_RNAT-SC_NAT)
index 954d805..dc143a3 100644 (file)
@@ -87,21 +87,22 @@ libc_hidden_def (_setjmp)
 ENTRY(__sigsetjmp)
        .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(2)
        alloc loc1=ar.pfs,2,2,2,0
+       .save ar.unat, r16
        mov r16=ar.unat
        ;;
        mov r17=ar.fpsr
        mov r2=in0
        add r3=8,in0
        ;;
-       st8.spill.nta [r2]=sp,16        // r12 (sp)
-       st8.spill.nta [r3]=gp,16        // r1 (gp)
+.mem.offset 8,0;       st8.spill.nta [r2]=sp,16        // r12 (sp)
+.mem.offset 0,0;       st8.spill.nta [r3]=gp,16        // r1 (gp)
        ;;
        st8.nta [r2]=r16,16             // save caller's unat
        st8.nta [r3]=r17,16             // save fpsr
        add r8=0xa0,in0
        ;;
-       st8.spill.nta [r2]=r4,16        // r4
-       st8.spill.nta [r3]=r5,16        // r5
+.mem.offset 8,0;       st8.spill.nta [r2]=r4,16        // r4
+.mem.offset 0,0;       st8.spill.nta [r3]=r5,16        // r5
        add r9=0xb0,in0
        ;;
        stf.spill.nta [r8]=f2,32
@@ -143,8 +144,8 @@ ENTRY(__sigsetjmp)
        stf.spill.nta [r8]=f30
        stf.spill.nta [r9]=f31
 
-       st8.spill.nta [r2]=r6,16        // r6
-       st8.spill.nta [r3]=r7,16        // r7
+.mem.offset 8,0;       st8.spill.nta [r2]=r6,16        // r6
+.mem.offset 0,0;       st8.spill.nta [r3]=r7,16        // r7
        ;;
        mov r23=ar.bsp
        mov r25=ar.unat
@@ -170,9 +171,10 @@ ENTRY(__sigsetjmp)
        st8.nta [r3]=in0                // &__jmp_buf
        br.call.dpnt.few rp=__sigjmp_save
 .ret0:                                 // force a new bundle ::q
-       mov r8=0
+       mov.m ar.unat=r16               // restore caller's unat
        mov rp=loc0
        mov ar.pfs=loc1
+       mov r8=0
        ret
 END(__sigsetjmp)