summaryrefslogtreecommitdiffstats
path: root/lib/csu/mips/crti.S
diff options
context:
space:
mode:
Diffstat (limited to 'lib/csu/mips/crti.S')
-rw-r--r--lib/csu/mips/crti.S50
1 files changed, 50 insertions, 0 deletions
diff --git a/lib/csu/mips/crti.S b/lib/csu/mips/crti.S
new file mode 100644
index 0000000..cada08d
--- /dev/null
+++ b/lib/csu/mips/crti.S
@@ -0,0 +1,50 @@
+#include <machine/asm.h>
+__FBSDID("$FreeBSD$");
+
+ .section .init,"ax",%progbits
+ .align 4
+ .globl _init
+ .type _init,%function
+_init:
+ .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
+ 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:
+ .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
+ 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
OpenPOWER on IntegriCloud