diff options
author | rofl0r <retnyg@gmx.net> | 2012-11-09 23:36:55 +0100 |
---|---|---|
committer | rofl0r <retnyg@gmx.net> | 2012-11-13 19:12:25 +0100 |
commit | 1c8eb8bad791fe9d01d0d4ab77882db634fa933d (patch) | |
tree | d3faf83663c1383f7ea16a0e6c68b3e2f4cc968a /crt | |
parent | 7669d1e334e6b96455eece78da43bf830b93d697 (diff) | |
download | musl-1c8eb8bad791fe9d01d0d4ab77882db634fa933d.tar.gz musl-1c8eb8bad791fe9d01d0d4ab77882db634fa933d.tar.bz2 musl-1c8eb8bad791fe9d01d0d4ab77882db634fa933d.tar.xz musl-1c8eb8bad791fe9d01d0d4ab77882db634fa933d.zip |
PPC port cleaned up, static linking works well now.
Diffstat (limited to 'crt')
-rw-r--r-- | crt/powerpc/crt1.s | 26 | ||||
-rw-r--r-- | crt/ppc/crt1.S | 27 |
2 files changed, 26 insertions, 27 deletions
diff --git a/crt/powerpc/crt1.s b/crt/powerpc/crt1.s new file mode 100644 index 00000000..7025430c --- /dev/null +++ b/crt/powerpc/crt1.s @@ -0,0 +1,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 diff --git a/crt/ppc/crt1.S b/crt/ppc/crt1.S deleted file mode 100644 index abf64077..00000000 --- a/crt/ppc/crt1.S +++ /dev/null @@ -1,27 +0,0 @@ -#include <bits/asm.h> - .weak _init - .weak _fini - .global _start - .type _start, %function -_start: - mr r9, r1 // Save the original stack pointer. - clrrwi r1, r1, 4 // Align the stack to 16 bytes. - lis r13, _SDA_BASE_@ha // r13 points to the small data area. - addi r13, r13, _SDA_BASE_@l // - li r0, 0 // Zero the frame pointer. - stwu r1, -16(r1) // The initial stack frame. - mtlr r0 // Clear the link register. - stw r0, 0(r1) // And save it. - lis r3, main@ha // Get main() ... - addi r3, r3, main@l - lwz r4, 0(r9) // and argc... - addi r5, r9, 4 // and argv ... - lis r6, _init@ha // and _init() ... - addi r6, r6, _init@l - lis r7, _fini@ha // and _fini() ... - addi r7, r7, _fini@l - li r8, 0 // ldso_fini == NULL - bl __libc_start_main // Let's go! - b . // Never gets here. - .end _start - .size _start, .-_start |