summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/alpha/init-first.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/alpha/init-first.h')
-rw-r--r--sysdeps/unix/sysv/linux/alpha/init-first.h48
1 files changed, 23 insertions, 25 deletions
diff --git a/sysdeps/unix/sysv/linux/alpha/init-first.h b/sysdeps/unix/sysv/linux/alpha/init-first.h
index ffbcaf1521..a3f5d8f0c4 100644
--- a/sysdeps/unix/sysv/linux/alpha/init-first.h
+++ b/sysdeps/unix/sysv/linux/alpha/init-first.h
@@ -2,28 +2,26 @@
This is done in one of two ways: either in the stack context
of program start, or having dlopen pass them in. */
-#define SYSDEP_CALL_INIT(NAME, INIT) \
- asm(".weak _dl_starting_up\n\t" \
- ".globl " #NAME "\n\t" \
- ".ent " #NAME "\n" \
- #NAME ":\n\t" \
- "ldgp $29, 0($27)\n\t" \
- ".prologue 1\n\t" \
- ".set at\n\t" \
- /* Are we a dynamic libc being loaded into a static program? */ \
- "lda $0, _dl_starting_up\n\t" \
- "beq $0, 1f\n\t" \
- "ldl $0, 0($0)\n" \
- "cmpeq $31, $0, $0\n" \
- "1:\t" \
- "stl $0, __libc_multiple_libcs\n\t" \
- /* If so, argc et al are in a0-a2 already. Otherwise, load them. */ \
- "bne $0, 2f\n\t" \
- "ldl $16, 0($30)\n\t" \
- "lda $17, 8($30)\n\t" \
- "s8addq $16, $17, $18\n\t" \
- "addq $18, 8, $18\n" \
- "2:\t" \
- "br $31, " #INIT "..ng\n\t" \
- ".set noat\n\t" \
- ".end " #NAME);
+#define SYSDEP_CALL_INIT(NAME, INIT) asm("\
+ .weak _dl_starting_up
+ .globl " #NAME "
+ .ent " #NAME "
+" #NAME ":
+ ldgp $29, 0($27)
+ .prologue 1
+ .set at
+ /* Are we a dynamic libc being loaded into a static program? */
+ lda $0, _dl_starting_up
+ beq $0, 1f
+ ldl $0, 0($0)
+ cmpeq $31, $0, $0
+1: stl $0, __libc_multiple_libcs
+ /* If so, argc et al are in a0-a2 already. Otherwise, load them. */
+ bne $0, 2f
+ ldl $16, 0($30)
+ lda $17, 8($30)
+ s8addq $16, $17, $18
+ addq $18, 8, $18
+2: br $31, " ASM_ALPHA_NG_SYMBOL_PREFIX #INIT "..ng
+ .set noat
+ .end " #NAME);