xref: /freebsd-13-stable/lib/csu/mips/crti.S (revision 3d497e17ebd33fe0f58d773e35ab994d750258d6)
1#include <machine/asm.h>
2#ifndef __clang__
3	.gnu_attribute 4, 0
4#endif
5	.section .init,"ax",%progbits
6	.align 4
7	.globl	_init
8	.type	_init,%function
9_init:
10	.set noreorder
11#if defined(__ABICALLS__) && (defined(__mips_o32) || defined(__mips_o64))
12	SETUP_GP
13#endif
14	PTR_ADDU sp, sp, -CALLFRAME_SIZ
15	REG_S	ra, CALLFRAME_RA(sp)
16#if defined(__ABICALLS__)
17#if defined(__mips_o32) || defined(__mips_o64)
18	SAVE_GP(CALLFRAME_GP)
19#else
20	SETUP_GP64(CALLFRAME_GP, _init)
21#endif
22#else /* __ABICALLS__ */
23#if defined(__mips_n32) || defined(__mips_n64)
24	REG_S	gp, CALLFRAME_GP(sp)
25#endif
26#endif
27	.set reorder
28
29	.section .fini,"ax",%progbits
30	.align 4
31	.globl	_fini
32	.type	_fini,%function
33_fini:
34	.set noreorder
35#if defined(__ABICALLS__) && (defined(__mips_o32) || defined(__mips_o64))
36	SETUP_GP
37#endif
38	PTR_ADDU sp, sp, -CALLFRAME_SIZ
39	REG_S	ra, CALLFRAME_RA(sp)
40#if defined(__ABICALLS__)
41#if defined(__mips_o32) || defined(__mips_o64)
42	SAVE_GP(CALLFRAME_GP)
43#else
44	SETUP_GP64(CALLFRAME_GP, _fini)
45#endif
46#else /* __ABICALLS__ */
47#if defined(__mips_n32) || defined(__mips_n64)
48	REG_S	gp, CALLFRAME_GP(sp)
49#endif
50#endif
51	.set reorder
52