(TRAMPOLINE_TEMPLATE): Save and restore all call-clobbered fp regs.

This commit is contained in:
Ulrich Drepper 1999-02-08 10:02:37 +00:00
parent 2bad373511
commit 4fb65d7fc7

View 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)