Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'libgloss/arm/linux-crt0.S')
-rw-r--r--libgloss/arm/linux-crt0.S46
1 files changed, 46 insertions, 0 deletions
diff --git a/libgloss/arm/linux-crt0.S b/libgloss/arm/linux-crt0.S
new file mode 100644
index 000000000..b3ba5bd0d
--- /dev/null
+++ b/libgloss/arm/linux-crt0.S
@@ -0,0 +1,46 @@
+/** Linux startup code for the ARM processor.
+ * Written by Shaun Jackman <sjackman@gmail.com>.
+ * Copyright 2006 Pathway Connectivity
+ *
+ * Permission to use, copy, modify, and distribute this software
+ * is freely granted, provided that this notice is preserved.
+ */
+
+.global _start
+.type _start, %function
+_start:
+#if __thumb__
+ /* Switch to Thumb mode. */
+ adr r0, _start_thumb+1
+ bx r0
+.size _start, .-_start
+.global _start_thumb
+.thumb_func
+_start_thumb:
+#endif
+
+#if 0
+ /* Clear the BSS. This task is normally handled by the kernel. */
+ ldr r0, =__bss_start
+ mov r1, #0
+ ldr r2, =_end
+ sub r2, r2, r0
+ bl memset
+#endif
+
+ pop {r0} @ argc
+ mov r1, sp @ argv
+ lsl r2, r0, #2
+ add r2, r1
+ add r2, #4 @ envp
+ ldr r3, =environ
+ str r2, [r3]
+ bl main
+ bl exit
+ b .
+
+#if __thumb__
+.size _start_thumb, .-_start_thumb
+#else
+.size _start, .-_start
+#endif