summaryrefslogtreecommitdiff
path: root/ldso/ldso/arm/dl-startup.h
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2001-07-03 22:15:31 +0000
committerEric Andersen <andersen@codepoet.org>2001-07-03 22:15:31 +0000
commit709c1793f5f5153f5b6ef0ca454ab7e2a6769415 (patch)
treeef0f2e6d306abfbfc06ddbe57e07c841af12314b /ldso/ldso/arm/dl-startup.h
parentecb79165c15958e69bff0285b1b8de852dfd2488 (diff)
Finish up merging the arm port into the main tree.
Diffstat (limited to 'ldso/ldso/arm/dl-startup.h')
-rw-r--r--ldso/ldso/arm/dl-startup.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/ldso/ldso/arm/dl-startup.h b/ldso/ldso/arm/dl-startup.h
new file mode 100644
index 000000000..dc21ea455
--- /dev/null
+++ b/ldso/ldso/arm/dl-startup.h
@@ -0,0 +1,31 @@
+/* Any assmbly language/system dependent hacks needed to setup boot1.c so it
+ * will work as expected and cope with whatever platform specific wierdness is
+ * needed for this architecture. */
+
+/* Overrive the default _dl_boot function, and replace it with a bit of asm.
+ * Then call the real _dl_boot function, which is now named _dl_boot2. */
+
+asm("\
+.text
+.globl _dl_boot
+_dl_boot:
+ mov r7, sp
+@ ldr r0, [sp], #4
+ mov r0,sp
+ bl _dl_boot2
+ mov r6, r0
+ mov r0, r7
+ mov pc, r6
+.previous\n\
+");
+
+#define _dl_boot _dl_boot2
+#define DL_BOOT(X) static void * __attribute__ ((unused)) _dl_boot (X)
+
+
+ /* It seems ARM needs an offset here */
+#undef ELFMAGIC
+#define ELFMAGIC ELFMAG+load_addr
+
+
+