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
|
.weak _init
.weak _fini
.global _start
.type _start, %function
_start:
mr 9, 1 # Save the original stack pointer.
clrrwi 1, 1, 4 # Align the stack to 16 bytes.
lis 13, _SDA_BASE_@ha # r13 points to the small data area.
addi 13, 13, _SDA_BASE_@l
li 0, 0 # Zero the frame pointer.
stwu 1, -16(1) # The initial stack frame.
mtlr 0 # Clear the link register.
stw 0, 0(1) # And save it.
lis 3, main@ha # Get main() ...
addi 3, 3, main@l
lwz 4, 0(9) # and argc...
addi 5, 9, 4 # and argv ...
lis 6, _init@ha # and _init() ...
addi 6, 6, _init@l
lis 7, _fini@ha # and _fini() ...
addi 7, 7, _fini@l
li 8, 0 # ldso_fini == NULL
bl __libc_start_main # Let's go!
b . # Never gets here.
.end _start
.size _start, .-_start
|