summaryrefslogtreecommitdiff
path: root/arm9/asm/RUNTIME_CPLUS_StaticInitializers.s
blob: 1c0caeb8c238c0ffba7b8e440c326b0b7a6c803a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
	.include "asm/macros.inc"
	.include "global.inc"

	.bss

	.global __global_destructor_chain
__global_destructor_chain: ; 0x021D74C8
	.space 0xC

	.text

	.extern __sinit__
	arm_func_start __call_static_initializers
__call_static_initializers: ; 0x020EC694
	stmdb sp!, {r4,lr}
	ldr r4, _020EC6BC ; =__sinit__
	b _020EC6A8
_020EC6A0:
	blx r0
	add r4, r4, #0x4
_020EC6A8:
	cmp r4, #0x0
	ldrne r0, [r4, #0x0]
	cmpne r0, #0x0
	bne _020EC6A0
	ldmia sp!, {r4,pc}
	.balign 4
_020EC6BC: .word __sinit__

	arm_func_start __destroy_global_chain
__destroy_global_chain: ; 0x020EC6C0
	stmdb sp!, {r3-r5,lr}
	ldr r4, _020EC700 ; =__global_destructor_chain
	ldr r2, [r4, #0x0]
	cmp r2, #0x0
	ldmeqia sp!, {r3-r5,pc}
_020EC6D4: ; 0x020EC6D4
	mvn r5, #0x0
_020EC6D8:
	ldr r0, [r2, #0x0]
	mov r1, r5
	str r0, [r4, #0x0]
	ldr r0, [r2, #0x8]
	ldr r2, [r2, #0x4]
	blx r2
	ldr r2, [r4, #0x0]
	cmp r2, #0x0
	bne _020EC6D8
	ldmia sp!, {r3-r5,pc}
	.balign 4
_020EC700: .word __global_destructor_chain

	exception __call_static_initializers, 45, 0x00100100
	exception __destroy_global_chain, 69, 0x00200300