|
@@ -1,23 +1,22 @@
|
|
|
# FIXME : does not work, the small data array needs to be relocated.
|
|
|
# see elfspec_ppc.pdf, page 76-84
|
|
|
- .global _start
|
|
|
- .type _start,@function
|
|
|
+ .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.
|
|
|
- lwz 3, 0(9) # and argc...
|
|
|
- addi 4, 9, 4 # and argv ...
|
|
|
- mtlr 0 # Clear the link register.
|
|
|
- # Go to the musl dynamic linker entry point.
|
|
|
- bl __dynlink
|
|
|
- cmpi 4, 0, 3, 1 # Check for a 1.
|
|
|
- bne 4, . # Stay here
|
|
|
- mtlr 3 # Set the link address...
|
|
|
- li 3, 0
|
|
|
- blr # and go.
|
|
|
- .end _start
|
|
|
- .size _start, .-_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.
|
|
|
+ lwz 3, 0(9) # and argc...
|
|
|
+ addi 4, 9, 4 # and argv ...
|
|
|
+ mtlr 0 # Clear the link register.
|
|
|
+ # Go to the musl dynamic linker entry point.
|
|
|
+ bl __dynlink
|
|
|
+ cmpi 4, 0, 3, 1 # Check for a 1.
|
|
|
+ bne 4, . # Stay here
|
|
|
+ mtlr 3 # Set the link address...
|
|
|
+ li 3, 0
|
|
|
+ blr # and go.
|
|
|
+ .end _start
|
|
|
+ .size _start, .-_start
|