Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 3 Mar 2010 09:02:56 +0000 (UTC)
From:      Juli Mallett <jmallett@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r204630 - user/jmallett/octeon/lib/csu/mips
Message-ID:  <201003030902.o2392uhU003095@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jmallett
Date: Wed Mar  3 09:02:55 2010
New Revision: 204630
URL: http://svn.freebsd.org/changeset/base/204630

Log:
  Rewrite init and fini stubs to support more ABIs.  Remove cruft from crt1.
  
  Now dynamically-linked n32 programs work.

Modified:
  user/jmallett/octeon/lib/csu/mips/crt1.c
  user/jmallett/octeon/lib/csu/mips/crti.S
  user/jmallett/octeon/lib/csu/mips/crtn.S

Modified: user/jmallett/octeon/lib/csu/mips/crt1.c
==============================================================================
--- user/jmallett/octeon/lib/csu/mips/crt1.c	Wed Mar  3 08:24:15 2010	(r204629)
+++ user/jmallett/octeon/lib/csu/mips/crt1.c	Wed Mar  3 09:02:55 2010	(r204630)
@@ -66,9 +66,6 @@ extern int etext;
 char **environ;
 const char *__progname = "";
 
-void __gccmain(void) {}
-void __main(void) {}
-
 /* The entry function. */
 void
 __start(char **ap,

Modified: user/jmallett/octeon/lib/csu/mips/crti.S
==============================================================================
--- user/jmallett/octeon/lib/csu/mips/crti.S	Wed Mar  3 08:24:15 2010	(r204629)
+++ user/jmallett/octeon/lib/csu/mips/crti.S	Wed Mar  3 09:02:55 2010	(r204630)
@@ -6,32 +6,45 @@ __FBSDID("$FreeBSD$");
 	.globl	_init
 	.type	_init,%function
 _init:
-#ifdef __ABICALLS__
-	.set   noreorder
-	.cpload $25
-	.set   reorder
-	subu	sp, sp, 32
-	.cprestore 16
-	sw	ra, 28(sp)
-
+	.set nreoorder
+#if defined(__ABICALLS__) && (defined(__mips_o32) || defined(__mips_o64))
+	SETUP_GP
+#endif
+	PTR_ADDU sp, sp, -CALLFRAME_SIZ
+	REG_S	ra, CALLFRAME_RA(sp)
+#if defined(__ABICALLS__)
+#if defined(__mips_o32) || defined(__mips_o64)
+	SAVE_GP(CALLFRAME_GP)
 #else
-	subu	sp, sp, 32
-	sw	ra, 28(sp)
+	SETUP_GP64(CALLFRAME_GP, _init)
+#endif
+#else /* __ABICALLS__ */
+#if defined(__mips_n32) || defined(__mips_n64)
+	REG_S	gp, CALLFRAME_GP(sp)
+#endif
 #endif
+	.set reorder
 
 	.section .fini,"ax",%progbits
 	.align 4
 	.globl	_fini
 	.type	_fini,%function
 _fini:
-#ifdef __ABICALLS__
-	.set   noreorder
-	.cpload $25
-	.set   reorder
-	subu	sp, sp, 32
-	.cprestore 16
-	sw	ra, 28(sp)
+	.set noreorder
+#if defined(__ABICALLS__) && (defined(__mips_o32) || defined(__mips_o64))
+	SETUP_GP
+#endif
+	PTR_ADDU sp, sp, -CALLFRAME_SIZ
+	REG_S	ra, CALLFRAME_RA(sp)
+#if defined(__ABICALLS__)
+#if defined(__mips_o32) || defined(__mips_o64)
+	SAVE_GP(CALLFRAME_GP)
 #else
-	subu    sp, sp, 32
-	sw	ra, 28(sp)
+	SETUP_GP64(CALLFRAME_GP, _fini)
+#endif
+#else /* __ABICALLS__ */
+#if defined(__mips_n32) || defined(__mips_n64)
+	REG_S	gp, CALLFRAME_GP(sp)
+#endif
 #endif
+	.set reorder

Modified: user/jmallett/octeon/lib/csu/mips/crtn.S
==============================================================================
--- user/jmallett/octeon/lib/csu/mips/crtn.S	Wed Mar  3 08:24:15 2010	(r204629)
+++ user/jmallett/octeon/lib/csu/mips/crtn.S	Wed Mar  3 09:02:55 2010	(r204630)
@@ -1,15 +1,24 @@
 #include <machine/asm.h>
 __FBSDID("$FreeBSD$");
+
 	.section .init,"ax",%progbits
-	lw	ra, 28(sp)
-	.set	noreorder
-	j	ra
-	addu	sp, sp, 32
-	.set	reorder
+	.align 4
+	.set noreorder
+#if defined(__ABICALLS__) && (defined(__mips_n32) || defined(__mips_n64))
+	REG_L	gp, CALLFRAME_GP(sp)
+#endif
+	REG_L	ra, CALLFRAME_RA(sp)
+	jr	ra
+	PTR_ADDU sp, sp, CALLFRAME_SIZ
+	.set reorder
 
 	.section .fini,"ax",%progbits
-	lw	ra, 28(sp)
-	.set	noreorder
-	j	ra
-	addu	sp, sp, 32
-	.set	reorder
+	.align 4
+	.set noreorder
+#if defined(__ABICALLS__) && (defined(__mips_n32) || defined(__mips_n64))
+	REG_L	gp, CALLFRAME_GP(sp)
+#endif
+	REG_L	ra, CALLFRAME_RA(sp)
+	jr	ra
+	PTR_ADDU sp, sp, CALLFRAME_SIZ
+	.set reorder



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201003030902.o2392uhU003095>