diff options
Diffstat (limited to 'mdk-stage1/dietlibc/alpha/start.S')
-rw-r--r-- | mdk-stage1/dietlibc/alpha/start.S | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/alpha/start.S b/mdk-stage1/dietlibc/alpha/start.S new file mode 100644 index 000000000..00b8e950d --- /dev/null +++ b/mdk-stage1/dietlibc/alpha/start.S @@ -0,0 +1,35 @@ +#include "start.h" + +#ifdef __alpha__ + +.text +.align 2 + .set noreorder + +.global __start +__start: +.global _start +_start: + clr $fp /* clear frame pointer */ + + br $gp,.Lstart /* set global pointer */ +.Lstart: + ldgp $gp, 0($gp) + +/* prepare to call main */ + ldl $16, 0($sp) /* argc */ + + lda $17, 8($sp) /* argv */ + + addq $16, 1, $18 /* argp */ + s8addq $18, $17, $18 /* (8*(argc+1))+argv -> argp */ + + stq $18, environ + + mov $0, $21 /* mov v0(dynload) to a5 */ + + jsr $26, main + mov $0, $16 + jsr $26, exit /* YES, CALL! for threads and atexit ! (+4 byte) */ + +#endif |