dynamic linker bootstrap overhaul
[musl] / arch / mips / crt_arch.h
1 __asm__(
2 ".set push\n"
3 ".set noreorder\n"
4 ".global _" START "\n"
5 ".global " START "\n"
6 ".type   _" START ", @function\n"
7 ".type   " START ", @function\n"
8 "_" START ":\n"
9 "" START ":\n"
10 "       bal 1f \n"
11 "        move $fp, $0 \n"
12 "2:     .gpword 2b \n"
13         .gpword " START "_c \n"
14 ".weak _DYNAMIC \n"
15 ".hidden _DYNAMIC \n"
16 "       .gpword _DYNAMIC \n"
17 "1:     lw $gp, 0($ra) \n"
18 "       subu $gp, $ra, $gp \n"
19 "       move $4, $sp \n"
20 "       lw $5, 8($ra) \n"
21 "       addu $5, $5, $gp \n"
22 "       lw $25, 4($ra) \n"
23 "       addu $25, $25, $gp \n"
24 "       subu $sp, $sp, 16 \n"
25 "       jalr $25 \n"
26 "        and $sp, $sp, -8 \n"
27 ".set pop \n"
28 );