1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
| | __asm__(
".set push\n"
".set noreorder\n"
".text \n"
".global _" START "\n"
".global " START "\n"
".type _" START ", @function\n"
".type " START ", @function\n"
"_" START ":\n"
"" START ":\n"
#if __mips_isa_rev < 6
#ifdef __mips_micromips
" move $fp, $0 \n"
" .align 2 \n"
" bal32 1f \n"
" nop32 \n"
#else
" bal 1f \n"
" move $fp, $0 \n"
#endif
#else
" move $fp, $0 \n"
" .align 2 \n"
" balc 1f \n"
#endif
" .gpword . \n"
" .gpword " START "_c \n"
".weak _DYNAMIC \n"
".hidden _DYNAMIC \n"
" .gpword _DYNAMIC \n"
#ifdef __mips_micromips
"1: ins $ra, $0, 0, 1 \n"
" lw $gp, 0($ra) \n"
" subu $gp, $ra, $gp \n"
" move $4, $sp \n"
" lw $5, 8($ra) \n"
" addu $5, $5, $gp \n"
" lw $25, 4($ra) \n"
" addu $25, $25, $gp \n"
" ori $25, $25, 1 \n"
" and $sp, $sp, -8 \n"
#else
"1: lw $gp, 0($ra) \n"
" subu $gp, $ra, $gp \n"
" move $4, $sp \n"
" lw $5, 8($ra) \n"
" addu $5, $5, $gp \n"
" lw $25, 4($ra) \n"
" addu $25, $25, $gp \n"
" and $sp, $sp, -8 \n"
#endif
#if __mips_isa_rev < 6
" jalr $25 \n"
" subu $sp, $sp, 16 \n"
#else
" subu $sp, $sp, 16 \n"
" jalrc $25 \n"
#endif
".set pop \n"
);
|