svn commit: trunk/uClibc/libc/sysdeps/linux/m68k
vapier at uclibc.org
vapier at uclibc.org
Wed Jun 7 14:29:19 UTC 2006
Author: vapier
Date: 2006-06-07 07:29:19 -0700 (Wed, 07 Jun 2006)
New Revision: 15308
Log:
Richard Sandiford writes:
m68k uClinux doesn't use the normal ELF entry point interface.
This patch adjusts crt1.S accordingly. I've followed the ARM
example and keyed the choice of interface on __ARCH_USE_MMU__.
Modified:
trunk/uClibc/libc/sysdeps/linux/m68k/crt1.S
Changeset:
Modified: trunk/uClibc/libc/sysdeps/linux/m68k/crt1.S
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/m68k/crt1.S 2006-06-07 14:25:22 UTC (rev 15307)
+++ trunk/uClibc/libc/sysdeps/linux/m68k/crt1.S 2006-06-07 14:29:19 UTC (rev 15308)
@@ -51,6 +51,13 @@
(4*(argc+1))(%sp) envp[0]
...
NULL
+
+ The uclinux conventions are different. %a1 is not defined on entry
+ and the stack is laid out as follows:
+
+ 0(%sp) argc
+ 4(%sp) argv
+ 8(%sp) envp
*/
#include <features.h>
@@ -73,15 +80,23 @@
arguments for `main': argc, argv. envp will be determined
later in __libc_start_main. */
move.l (%sp)+, %d0 /* Pop the argument count. */
+#ifndef __ARCH_USE_MMU__
+ move.l (%sp)+, %a0
+#else
move.l %sp, %a0 /* The argument vector starts just at the
current stack top. */
+#endif
/* Provide the highest stack address to the user code (for stacks
which grow downward). */
pea (%sp)
+#ifndef __ARCH_USE_MMU__
+ clr.l -(%sp)
+#else
pea (%a1) /* Push address of the shared library
termination function. */
+#endif
/* Push the address of our own entry points to `.fini' and
`.init'. */
More information about the uClibc-cvs
mailing list