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