diff options
Diffstat (limited to 'lib/csu/mips/crti.S')
-rw-r--r-- | lib/csu/mips/crti.S | 50 |
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 |