crtn.s 470 B

12345678910111213141516171819202122232425262728293031
  1. .weak __init_array_start
  2. .weak __init_array_end
  3. .hidden __init_array_start
  4. .hidden __init_array_end
  5. .section .init
  6. adr lr, 1f
  7. ldr r4, 2f
  8. ldr r5, 2f+4
  9. add r4, r4, lr
  10. add r5, r5, lr
  11. 1: adr lr, 1b
  12. cmp r4, r5
  13. beq 3f
  14. ldmia r4!, {r3}
  15. ldm sp, {r0,r1,r2}
  16. tst r3,#1
  17. moveq pc,r3
  18. bx r3
  19. 3: pop {r0,r1,r2,r4,r5,lr}
  20. tst lr,#1
  21. moveq pc,lr
  22. bx lr
  23. 2: .word __init_array_start-1b
  24. .word __init_array_end-1b
  25. .section .fini
  26. pop {r4,r5,r6,lr}
  27. tst lr,#1
  28. moveq pc,lr
  29. bx lr