crtn.s 418 B

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