crt_arch.h 1022 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #ifdef __SH_FDPIC__
  2. __asm__(
  3. ".text \n"
  4. ".global " START " \n"
  5. START ": \n"
  6. #ifndef SHARED
  7. " mov r8, r4 \n"
  8. " mova 1f, r0 \n"
  9. " mov.l 1f, r5 \n"
  10. " mov.l 1f+4, r6 \n"
  11. " add r0, r5 \n"
  12. " bsr __fdpic_fixup \n"
  13. " add r0, r6 \n"
  14. " mov r0, r12 \n"
  15. #endif
  16. " mov r10, r5 \n"
  17. " mov r15, r4 \n"
  18. " mov.l r9, @-r15 \n"
  19. " mov.l r8, @-r15 \n"
  20. " mov #-16, r0 \n"
  21. " bsr " START "_c \n"
  22. " and r0, r15 \n"
  23. ".align 2 \n"
  24. "1: .long __ROFIXUP_LIST__@PCREL \n"
  25. " .long __ROFIXUP_END__@PCREL + 4 \n"
  26. );
  27. #ifndef SHARED
  28. #include "fdpic_crt.h"
  29. #endif
  30. #else
  31. __asm__(
  32. ".text \n"
  33. ".global " START " \n"
  34. START ": \n"
  35. " mova 1f, r0 \n"
  36. " mov.l 1f, r5 \n"
  37. " add r0, r5 \n"
  38. " mov r15, r4 \n"
  39. " mov #-16, r0 \n"
  40. " and r0, r15 \n"
  41. " bsr " START "_c \n"
  42. " nop \n"
  43. ".align 2 \n"
  44. ".weak _DYNAMIC \n"
  45. ".hidden _DYNAMIC \n"
  46. "1: .long _DYNAMIC-. \n"
  47. );
  48. #endif
  49. /* used by gcc for switching the FPU between single and double precision */
  50. #ifdef SHARED
  51. __attribute__((__visibility__("hidden")))
  52. #endif
  53. const unsigned long __fpscr_values[2] = { 0, 0x80000 };