diff options
Diffstat (limited to 'sysdeps/alpha')
-rw-r--r-- | sysdeps/alpha/dl-machine.h | 139 |
1 files changed, 93 insertions, 46 deletions
diff --git a/sysdeps/alpha/dl-machine.h b/sysdeps/alpha/dl-machine.h index b63661f6f3..d351e9dccc 100644 --- a/sysdeps/alpha/dl-machine.h +++ b/sysdeps/alpha/dl-machine.h @@ -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) |