svn commit: r204630 - user/jmallett/octeon/lib/csu/mips
Juli Mallett
jmallett at FreeBSD.org
Wed Mar 3 09:02:56 UTC 2010
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
More information about the svn-src-user
mailing list