tlsbin.s 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. .section ".tbss", "awT", @nobits
  2. .globl bg1, bg2
  3. bg1: .space 4
  4. bg2: .space 4
  5. bl1: .space 4
  6. bl2: .space 4
  7. .text
  8. .globl _start
  9. .type _start,@function
  10. _start:
  11. mov.l r12,@-r15
  12. mov.l r14,@-r15
  13. mov r15,r14
  14. ! Set up .GOT pointer for non-pic @gottpoff sequences
  15. mova .L3,r0
  16. mov.l .L3,r12
  17. add r0,r12
  18. nop;nop;nop;nop
  19. ! @GOTTPOFF IE against global var
  20. mov.l 1f,r0
  21. stc gbr,r1
  22. mov.l @(r0,r12),r0
  23. bra 2f
  24. add r0,r1
  25. .align 2
  26. 1: .long sG3@GOTTPOFF
  27. 2:
  28. nop;nop;nop;nop
  29. ! @GOTTPOFF IE -> LE against global var defined in exec
  30. mov.l 1f,r0
  31. stc gbr,r1
  32. mov.l @(r0,r12),r0
  33. bra 2f
  34. add r0,r1
  35. .align 2
  36. 1: .long bg1@GOTTPOFF
  37. 2:
  38. nop;nop;nop;nop
  39. ! @GOTTPOFF IE -> LE against local var
  40. mov.l 1f,r0
  41. stc gbr,r1
  42. mov.l @(r0,r12),r0
  43. bra 2f
  44. add r0,r1
  45. .align 2
  46. 1: .long bl2@GOTTPOFF
  47. 2:
  48. nop;nop;nop;nop
  49. ! @GOTTPOFF IE -> LE against hidden but not local var
  50. mov.l 1f,r0
  51. stc gbr,r1
  52. mov.l @(r0,r12),r0
  53. bra 2f
  54. add r0,r1
  55. .align 2
  56. 1: .long sh2@GOTTPOFF
  57. 2:
  58. nop;nop;nop;nop
  59. ! LE @TPOFF, global var defined in exec
  60. stc gbr,r1
  61. mov.l .L4,r0
  62. add r1,r0
  63. nop;nop;nop;nop
  64. ! LE @TPOFF, local var
  65. stc gbr,r1
  66. mov.l .L5,r0
  67. add r1,r0
  68. nop;nop;nop;nop
  69. ! LE @TPOFF, hidden var defined in exec
  70. stc gbr,r1
  71. mov.l .L6,r0
  72. add r1,r0
  73. nop;nop;nop;nop
  74. mov r14,r15
  75. rts
  76. mov.l @r15+,r14
  77. .align 2
  78. .L3: .long _GLOBAL_OFFSET_TABLE_
  79. .L4: .long sg1@TPOFF
  80. .L5: .long bl1@TPOFF
  81. .L6: .long sh1@TPOFF