about summary refs log tree commit diff
path: root/crt/powerpc
diff options
context:
space:
mode:
authorrofl0r <retnyg@gmx.net>2012-11-09 23:36:55 +0100
committerrofl0r <retnyg@gmx.net>2012-11-13 19:12:25 +0100
commit1c8eb8bad791fe9d01d0d4ab77882db634fa933d (patch)
treed3faf83663c1383f7ea16a0e6c68b3e2f4cc968a /crt/powerpc
parent7669d1e334e6b96455eece78da43bf830b93d697 (diff)
downloadmusl-1c8eb8bad791fe9d01d0d4ab77882db634fa933d.tar.gz
musl-1c8eb8bad791fe9d01d0d4ab77882db634fa933d.tar.xz
musl-1c8eb8bad791fe9d01d0d4ab77882db634fa933d.zip
PPC port cleaned up, static linking works well now.
Diffstat (limited to 'crt/powerpc')
-rw-r--r--crt/powerpc/crt1.s26
1 files changed, 26 insertions, 0 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