add or1k (OpenRISC 1000) architecture port
[musl] / src / ldso / or1k / start.s
1 .global _dlstart
2 _dlstart:
3         l.jal   1f
4          l.nop
5 1:      l.movhi r5, gotpchi(_GLOBAL_OFFSET_TABLE_+0)
6         l.ori   r5, r5, gotpclo(_GLOBAL_OFFSET_TABLE_+4)
7         l.add   r5, r5, r9
8         l.movhi r3, gotoffhi(_DYNAMIC)
9         l.ori   r3, r3, gotofflo(_DYNAMIC)
10         l.add   r5, r5, r3
11
12         l.lwz   r3, 0(r1)
13         l.addi  r4, r1, 4
14         l.jal   plt(__reloc_self)
15          l.addi r1, r1, -16
16
17         l.lwz   r3, 16(r1)
18         l.jal   plt(__dynlink)
19          l.addi r4, r1, 20
20         l.addi  r1, r1, 16
21
22         l.lwz   r4, 0(r1)
23 1:      l.addi  r4, r4, -1
24         l.lwz   r5, 4(r1)
25         l.sfeqi r5, -1
26         l.bf    1b
27          l.addi r1, r1, 4
28
29         l.addi  r4, r4, 1
30         l.addi  r1, r1, -4
31         l.sw    0(r1), r4
32
33         l.jr    r11
34          l.ori  r3, r0, 0