crti.S 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*-
  2. * Copyright 2001 David E. O'Brien
  3. * All rights reserved.
  4. *
  5. * Redistribution and use in source and binary forms, with or without
  6. * modification, are permitted provided that the following conditions
  7. * are met:
  8. * 1. Redistributions of source code must retain the above copyright
  9. * notice, this list of conditions and the following disclaimer.
  10. * 2. Redistributions in binary form must reproduce the above copyright
  11. * notice, this list of conditions and the following disclaimer in the
  12. * documentation and/or other materials provided with the distribution.
  13. *
  14. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  15. * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  16. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  17. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  18. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  19. * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  20. * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  21. * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  22. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  23. * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  24. */
  25. #include <machine/asm.h>
  26. #ifdef _CALL_ELF
  27. .abiversion _CALL_ELF
  28. #endif
  29. .section .init,"ax",@progbits
  30. .p2align 2
  31. .globl _init
  32. #if !defined(_CALL_ELF) || _CALL_ELF == 1
  33. .section ".opd","aw"
  34. .p2align 3
  35. _init:
  36. .quad .L._init,.TOC.@tocbase,0
  37. .previous
  38. .type _init,@function
  39. .p2align 4
  40. .L._init:
  41. #else
  42. .p2align 4
  43. .globl _init
  44. .type _init,@function
  45. _init:
  46. addis %r2, %r12, (.TOC.-_init)@ha
  47. addi %r2, %r2, (.TOC.-_init)@l
  48. .localentry _init, .-_init
  49. #endif
  50. stdu 1,-48(1)
  51. mflr 0
  52. std 0,64(1)
  53. /* Fini */
  54. .section .fini,"ax",@progbits
  55. .p2align 2
  56. .globl _fini
  57. #if !defined(_CALL_ELF) || _CALL_ELF == 1
  58. .section ".opd","aw"
  59. .p2align 3
  60. _fini:
  61. .quad .L._fini,.TOC.@tocbase,0
  62. .previous
  63. .type _fini,@function
  64. .p2align 4
  65. .L._fini:
  66. #else
  67. .p2align 4
  68. .globl _fini
  69. .type _fini,@function
  70. _fini:
  71. addis %r2, %r12, (.TOC.-_fini)@ha
  72. addi %r2, %r2, (.TOC.-_fini)@l
  73. .localentry _fini, .-_fini
  74. #endif
  75. stdu 1,-48(1)
  76. mflr 0
  77. std 0,64(1)
  78. .section .note.GNU-stack,"",%progbits