summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2010-03-03 21:59:23 +0000
committerimp <imp@FreeBSD.org>2010-03-03 21:59:23 +0000
commitb6d8a9837e6da5013dcd38683ceece26d89bb7fa (patch)
treece64b682b31c5153d7d43575c3a974262181f5c2 /lib
parentb97dc2b04dbc0864bb4274df13fc3f620a87776e (diff)
downloadFreeBSD-src-b6d8a9837e6da5013dcd38683ceece26d89bb7fa.zip
FreeBSD-src-b6d8a9837e6da5013dcd38683ceece26d89bb7fa.tar.gz
Use ABI neutral macrosa
Submitted by: jmallet
Diffstat (limited to 'lib')
-rw-r--r--lib/csu/mips/crti.S51
-rw-r--r--lib/csu/mips/crtn.S29
2 files changed, 51 insertions, 29 deletions
diff --git a/lib/csu/mips/crti.S b/lib/csu/mips/crti.S
index 1a0d23e..c976c84 100644
--- a/lib/csu/mips/crti.S
+++ b/lib/csu/mips/crti.S
@@ -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
diff --git a/lib/csu/mips/crtn.S b/lib/csu/mips/crtn.S
index 4803994..8d190f8 100644
--- a/lib/csu/mips/crtn.S
+++ b/lib/csu/mips/crtn.S
@@ -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
OpenPOWER on IntegriCloud