crtn.S 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # Terminate C-SKY .init and .fini sections.
  2. # Copyright (C) 2018-2022 Free Software Foundation, Inc.
  3. # Contributed by C-SKY Microsystems and Mentor Graphics.
  4. #
  5. # This file is free software; you can redistribute it and/or modify it
  6. # under the terms of the GNU General Public License as published by the
  7. # Free Software Foundation; either version 3, or (at your option) any
  8. # later version.
  9. #
  10. # This file is distributed in the hope that it will be useful, but
  11. # WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  13. # General Public License for more details.
  14. #
  15. # Under Section 7 of GPL version 3, you are granted additional
  16. # permissions described in the GCC Runtime Library Exception, version
  17. # 3.1, as published by the Free Software Foundation.
  18. #
  19. # You should have received a copy of the GNU General Public License and
  20. # a copy of the GCC Runtime Library Exception along with this program;
  21. # see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
  22. # <http://www.gnu.org/licenses/>.
  23. # This file just makes sure that the .fini and .init sections do in
  24. # fact return. Users may put any desired instructions in those sections.
  25. # This file is the last thing linked into any executable.
  26. .file "crtn.S"
  27. # Is this the GLIBC version?
  28. #if defined(__gnu_linux__)
  29. .section .init,"ax",@progbits
  30. ldw lr, (sp, 0)
  31. addi sp, 8
  32. rts
  33. .section .fini,"ax",@progbits
  34. ldw lr, (sp, 0)
  35. addi sp, 8
  36. rts
  37. #else /* !defined(__gnu_linux__) */
  38. .section ".init"
  39. ldw lr, (sp, 12)
  40. addi sp, 16
  41. jmp lr
  42. .section ".fini"
  43. ldw lr, (sp, 12)
  44. addi sp, 16
  45. jmp lr
  46. # Th-th-th-that is all folks!
  47. #endif /* defined(__gnu_linux__) */