Really make egcs support.

This commit is contained in:
Ulrich Drepper 1997-12-22 20:19:45 +00:00
parent 48a0be2705
commit 2988b6bbfb

View File

@ -2,28 +2,26 @@
This is done in one of two ways: either in the stack context This is done in one of two ways: either in the stack context
of program start, or having dlopen pass them in. */ of program start, or having dlopen pass them in. */
#define SYSDEP_CALL_INIT(NAME, INIT) \ #define SYSDEP_CALL_INIT(NAME, INIT) asm("\
asm(".weak _dl_starting_up\n\t" \ .weak _dl_starting_up
".globl " #NAME "\n\t" \ .globl " #NAME "
".ent " #NAME "\n" \ .ent " #NAME "
#NAME ":\n\t" \ " #NAME ":
"ldgp $29, 0($27)\n\t" \ ldgp $29, 0($27)
".prologue 1\n\t" \ .prologue 1
".set at\n\t" \ .set at
/* Are we a dynamic libc being loaded into a static program? */ \ /* Are we a dynamic libc being loaded into a static program? */
"lda $0, _dl_starting_up\n\t" \ lda $0, _dl_starting_up
"beq $0, 1f\n\t" \ beq $0, 1f
"ldl $0, 0($0)\n" \ ldl $0, 0($0)
"cmpeq $31, $0, $0\n" \ cmpeq $31, $0, $0
"1:\t" \ 1: stl $0, __libc_multiple_libcs
"stl $0, __libc_multiple_libcs\n\t" \ /* If so, argc et al are in a0-a2 already. Otherwise, load them. */
/* If so, argc et al are in a0-a2 already. Otherwise, load them. */ \ bne $0, 2f
"bne $0, 2f\n\t" \ ldl $16, 0($30)
"ldl $16, 0($30)\n\t" \ lda $17, 8($30)
"lda $17, 8($30)\n\t" \ s8addq $16, $17, $18
"s8addq $16, $17, $18\n\t" \ addq $18, 8, $18
"addq $18, 8, $18\n" \ 2: br $31, " ASM_ALPHA_NG_SYMBOL_PREFIX #INIT "..ng
"2:\t" \ .set noat
"br $31, " #INIT "..ng\n\t" \ .end " #NAME);
".set noat\n\t" \
".end " #NAME);