diff options
Diffstat (limited to 'mdk-stage1/dietlibc/alpha/start.S')
-rw-r--r-- | mdk-stage1/dietlibc/alpha/start.S | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/mdk-stage1/dietlibc/alpha/start.S b/mdk-stage1/dietlibc/alpha/start.S index 00b8e950d..850ce2420 100644 --- a/mdk-stage1/dietlibc/alpha/start.S +++ b/mdk-stage1/dietlibc/alpha/start.S @@ -1,7 +1,3 @@ -#include "start.h" - -#ifdef __alpha__ - .text .align 2 .set noreorder @@ -17,19 +13,21 @@ _start: ldgp $gp, 0($gp) /* prepare to call main */ - ldl $16, 0($sp) /* argc */ + ldl $16, 0($sp) /* argc / a0 */ - lda $17, 8($sp) /* argv */ + lda $17, 8($sp) /* argv / a1 */ - addq $16, 1, $18 /* argp */ + addq $16, 1, $18 /* argp / a2 */ s8addq $18, $17, $18 /* (8*(argc+1))+argv -> argp */ stq $18, environ - mov $0, $21 /* mov v0(dynload) to a5 */ - +#ifdef WANT_DYNAMIC +/* in v0 ($0) is the ld.so _fini pointer */ + mov $0, $19 /* mov v0(dynload) to a3 */ + jsr $26, dyn_start +#else jsr $26, main +#endif mov $0, $16 jsr $26, exit /* YES, CALL! for threads and atexit ! (+4 byte) */ - -#endif |