diff options
| -rw-r--r-- | crt/arm/crti.s | 24 | ||||
| -rw-r--r-- | crt/arm/crtn.s | 24 | 
2 files changed, 4 insertions, 44 deletions
| diff --git a/crt/arm/crti.s b/crt/arm/crti.s index 35ae6ae6..0d479cd2 100644 --- a/crt/arm/crti.s +++ b/crt/arm/crti.s @@ -1,29 +1,9 @@  .section .init  .global _init  _init: -	push {r0,r1,r2,r4,r5,lr} - -.weak __fini_array_start -.weak __fini_array_end -.hidden __fini_array_start -.hidden __fini_array_end +	push {r0,lr}  .section .fini  .global _fini  _fini: -	push {r4,r5,r6,lr} -	adr lr, 1f -	ldr r4, 2f -	ldr r5, 2f+4 -	add r4, r4, lr -	add r5, r5, lr -1:	adr lr, 1b -	cmp r4, r5 -	beq 3f -	ldmia r4!, {r3} -	tst r3,#1 -	moveq pc,r3 -	bx r3 -2:	.word __fini_array_start-1b -	.word __fini_array_end-1b -3:	 +	push {r0,lr} diff --git a/crt/arm/crtn.s b/crt/arm/crtn.s index eb0e883e..1b626c0a 100644 --- a/crt/arm/crtn.s +++ b/crt/arm/crtn.s @@ -1,31 +1,11 @@ -.weak __init_array_start -.weak __init_array_end -.hidden __init_array_start -.hidden __init_array_end -  .section .init -	adr lr, 1f -	ldr r4, 2f -	ldr r5, 2f+4 -	add r4, r4, lr -	add r5, r5, lr -1:	adr lr, 1b -	cmp r4, r5 -	beq 3f -	ldmia r4!, {r3} -	ldm sp, {r0,r1,r2} -	tst r3,#1 -	moveq pc,r3 -	bx r3 -3:	pop {r0,r1,r2,r4,r5,lr} +	pop {r0,lr}  	tst lr,#1  	moveq pc,lr  	bx lr -2:	.word __init_array_start-1b -	.word __init_array_end-1b  .section .fini -	pop {r4,r5,r6,lr} +	pop {r0,lr}  	tst lr,#1  	moveq pc,lr  	bx lr | 
