(TRAMPOLINE_TEMPLATE): Save and restore all call-clobbered fp regs.
authorUlrich Drepper <drepper@redhat.com>
Mon, 8 Feb 1999 10:02:37 +0000 (10:02 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 8 Feb 1999 10:02:37 +0000 (10:02 +0000)
sysdeps/alpha/dl-machine.h

index b63661f..d351e9d 100644 (file)
@@ -134,31 +134,55 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
        .globl " #tramp_name "
        .ent " #tramp_name "
 " #tramp_name ":
-       lda     $sp, -168($sp)
-       .frame  $sp, 168, $26
+       lda     $sp, -44*8($sp)
+       .frame  $sp, 44*8, $26
        /* Preserve all integer registers that C normally doesn't.  */
-       stq     $26, 0($sp)
-       stq     $0, 8($sp)
-       stq     $1, 16($sp)
-       stq     $2, 24($sp)
-       stq     $3, 32($sp)
-       stq     $4, 40($sp)
-       stq     $5, 48($sp)
-       stq     $6, 56($sp)
-       stq     $7, 64($sp)
-       stq     $8, 72($sp)
-       stq     $16, 80($sp)
-       stq     $17, 88($sp)
-       stq     $18, 96($sp)
-       stq     $19, 104($sp)
-       stq     $20, 112($sp)
-       stq     $21, 120($sp)
-       stq     $22, 128($sp)
-       stq     $23, 136($sp)
-       stq     $24, 144($sp)
-       stq     $25, 152($sp)
-       stq     $29, 160($sp)
-       .mask   0x27ff01ff, -168
+       stq     $26, 0*8($sp)
+       stq     $0, 1*8($sp)
+       stq     $1, 2*8($sp)
+       stq     $2, 3*8($sp)
+       stq     $3, 4*8($sp)
+       stq     $4, 5*8($sp)
+       stq     $5, 6*8($sp)
+       stq     $6, 7*8($sp)
+       stq     $7, 8*8($sp)
+       stq     $8, 9*8($sp)
+       stq     $16, 10*8($sp)
+       stq     $17, 11*8($sp)
+       stq     $18, 12*8($sp)
+       stq     $19, 13*8($sp)
+       stq     $20, 14*8($sp)
+       stq     $21, 15*8($sp)
+       stq     $22, 16*8($sp)
+       stq     $23, 17*8($sp)
+       stq     $24, 18*8($sp)
+       stq     $25, 19*8($sp)
+       stq     $29, 20*8($sp)
+       stt     $f0, 21*8($sp)
+       stt     $f1, 22*8($sp)
+       stt     $f10, 23*8($sp)
+       stt     $f11, 24*8($sp)
+       stt     $f12, 25*8($sp)
+       stt     $f13, 26*8($sp)
+       stt     $f14, 27*8($sp)
+       stt     $f15, 28*8($sp)
+       stt     $f16, 29*8($sp)
+       stt     $f17, 30*8($sp)
+       stt     $f18, 31*8($sp)
+       stt     $f19, 32*8($sp)
+       stt     $f20, 33*8($sp)
+       stt     $f21, 34*8($sp)
+       stt     $f22, 35*8($sp)
+       stt     $f23, 36*8($sp)
+       stt     $f24, 37*8($sp)
+       stt     $f25, 38*8($sp)
+       stt     $f26, 39*8($sp)
+       stt     $f27, 40*8($sp)
+       stt     $f28, 41*8($sp)
+       stt     $f29, 42*8($sp)
+       stt     $f30, 43*8($sp)
+       .mask   0x27ff01ff, -44*8
+       .fmask  0xfffffc03, -(44-21)*8
        /* Set up our $gp */
        br      $gp, .+4
        ldgp    $gp, 0($gp)
@@ -177,31 +201,54 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
        /* Move the destination address into position.  */
        mov     $0, $27
        /* Restore program registers.  */
-       ldq     $26, 0($sp)
-       ldq     $0, 8($sp)
-       ldq     $1, 16($sp)
-       ldq     $2, 24($sp)
-       ldq     $3, 32($sp)
-       ldq     $4, 40($sp)
-       ldq     $5, 48($sp)
-       ldq     $6, 56($sp)
-       ldq     $7, 64($sp)
-       ldq     $8, 72($sp)
-       ldq     $16, 80($sp)
-       ldq     $17, 88($sp)
-       ldq     $18, 96($sp)
-       ldq     $19, 104($sp)
-       ldq     $20, 112($sp)
-       ldq     $21, 120($sp)
-       ldq     $22, 128($sp)
-       ldq     $23, 136($sp)
-       ldq     $24, 144($sp)
-       ldq     $25, 152($sp)
-       ldq     $29, 160($sp)
+       ldq     $26, 0*8($sp)
+       ldq     $0, 1*8($sp)
+       ldq     $1, 2*8($sp)
+       ldq     $2, 3*8($sp)
+       ldq     $3, 4*8($sp)
+       ldq     $4, 5*8($sp)
+       ldq     $5, 6*8($sp)
+       ldq     $6, 7*8($sp)
+       ldq     $7, 8*8($sp)
+       ldq     $8, 9*8($sp)
+       ldq     $16, 10*8($sp)
+       ldq     $17, 11*8($sp)
+       ldq     $18, 12*8($sp)
+       ldq     $19, 13*8($sp)
+       ldq     $20, 14*8($sp)
+       ldq     $21, 15*8($sp)
+       ldq     $22, 16*8($sp)
+       ldq     $23, 17*8($sp)
+       ldq     $24, 18*8($sp)
+       ldq     $25, 19*8($sp)
+       ldq     $29, 20*8($sp)
+       ldt     $f0, 21*8($sp)
+       ldt     $f1, 22*8($sp)
+       ldt     $f10, 23*8($sp)
+       ldt     $f11, 24*8($sp)
+       ldt     $f12, 25*8($sp)
+       ldt     $f13, 26*8($sp)
+       ldt     $f14, 27*8($sp)
+       ldt     $f15, 28*8($sp)
+       ldt     $f16, 29*8($sp)
+       ldt     $f17, 30*8($sp)
+       ldt     $f18, 31*8($sp)
+       ldt     $f19, 32*8($sp)
+       ldt     $f20, 33*8($sp)
+       ldt     $f21, 34*8($sp)
+       ldt     $f22, 35*8($sp)
+       ldt     $f23, 36*8($sp)
+       ldt     $f24, 37*8($sp)
+       ldt     $f25, 38*8($sp)
+       ldt     $f26, 39*8($sp)
+       ldt     $f27, 40*8($sp)
+       ldt     $f28, 41*8($sp)
+       ldt     $f29, 42*8($sp)
+       ldt     $f30, 43*8($sp)
        /* Flush the Icache after having modified the .plt code.  */
        " #IMB "
        /* Clean up and turn control to the destination */
-       lda     $sp, 168($sp)
+       lda     $sp, 44*8($sp)
        jmp     $31, ($27)
        .end " #tramp_name)