tls-2.s 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. .section .tbss,"awT",@nobits
  2. .align 4
  3. .type l, @object
  4. .size l, 4
  5. l:
  6. .zero 4
  7. .align 4
  8. .globl i
  9. .type i, @object
  10. .size i, 4
  11. i:
  12. .zero 4
  13. .text
  14. .globl _start
  15. _start:
  16. call #gettlsoff(l+1)
  17. call #gettlsoff(l+1+4096)
  18. call #gettlsoff(l+1+65536)
  19. sethi.p #gottlsdeschi(l+2), gr14
  20. setlo #gottlsdesclo(l+2), gr14
  21. ldd #tlsdesc(l+2)@(gr15, gr14), gr8
  22. calll #gettlsoff(l+2)@(gr8, gr0)
  23. sethi.p #gottlsdeschi(l+2+4096), gr14
  24. setlo #gottlsdesclo(l+2+4096), gr14
  25. ldd #tlsdesc(l+2+4096)@(gr15, gr14), gr8
  26. calll #gettlsoff(l+2+4096)@(gr8, gr0)
  27. sethi.p #gottlsdeschi(l+2+65536), gr14
  28. setlo #gottlsdesclo(l+2+65536), gr14
  29. ldd #tlsdesc(l+2+65536)@(gr15, gr14), gr8
  30. calll #gettlsoff(l+2+65536)@(gr8, gr0)
  31. lddi.p @(gr15, #gottlsdesc12(l+3)), gr8
  32. setlos #gottlsdesclo(l+3), gr14
  33. calll #gettlsoff(l+3)@(gr8, gr0)
  34. lddi.p @(gr15, #gottlsdesc12(l+3+4096)), gr8
  35. setlos #gottlsdesclo(l+3+4096), gr14
  36. calll #gettlsoff(l+3+4096)@(gr8, gr0)
  37. lddi.p @(gr15, #gottlsdesc12(l+3+65536)), gr8
  38. setlos #gottlsdesclo(l+3+65536), gr14
  39. calll #gettlsoff(l+3+65536)@(gr8, gr0)
  40. sethi #tlsmoffhi(l+4), gr9
  41. setlo #tlsmofflo(l+4), gr9
  42. sethi #tlsmoffhi(l+4+4096), gr9
  43. setlo #tlsmofflo(l+4+4096), gr9
  44. sethi #tlsmoffhi(l+4+65536), gr9
  45. setlo #tlsmofflo(l+4+65536), gr9
  46. call #gettlsoff(i+1)
  47. call #gettlsoff(i+1+4096)
  48. call #gettlsoff(i+1+65536)
  49. sethi.p #gottlsdeschi(i+2), gr14
  50. setlo #gottlsdesclo(i+2), gr14
  51. ldd #tlsdesc(i+2)@(gr15, gr14), gr8
  52. calll #gettlsoff(i+2)@(gr8, gr0)
  53. sethi.p #gottlsdeschi(i+2+4096), gr14
  54. setlo #gottlsdesclo(i+2+4096), gr14
  55. ldd #tlsdesc(i+2+4096)@(gr15, gr14), gr8
  56. calll #gettlsoff(i+2+4096)@(gr8, gr0)
  57. sethi.p #gottlsdeschi(i+2+65536), gr14
  58. setlo #gottlsdesclo(i+2+65536), gr14
  59. ldd #tlsdesc(i+2+65536)@(gr15, gr14), gr8
  60. calll #gettlsoff(i+2+65536)@(gr8, gr0)
  61. lddi.p @(gr15, #gottlsdesc12(i+3)), gr8
  62. setlos #gottlsdesclo(i+3), gr14
  63. calll #gettlsoff(i+3)@(gr8, gr0)
  64. lddi.p @(gr15, #gottlsdesc12(i+3+4096)), gr8
  65. setlos #gottlsdesclo(i+3+4096), gr14
  66. calll #gettlsoff(i+3+4096)@(gr8, gr0)
  67. lddi.p @(gr15, #gottlsdesc12(i+3+65536)), gr8
  68. setlos #gottlsdesclo(i+3+65536), gr14
  69. calll #gettlsoff(i+3+65536)@(gr8, gr0)
  70. sethi #tlsmoffhi(i+4), gr9
  71. setlo #tlsmofflo(i+4), gr9
  72. sethi #tlsmoffhi(i+4+4096), gr9
  73. setlo #tlsmofflo(i+4+4096), gr9
  74. sethi #tlsmoffhi(i+4+65536), gr9
  75. setlo #tlsmofflo(i+4+65536), gr9
  76. call #gettlsoff(0+1)
  77. call #gettlsoff(0+1+4096)
  78. call #gettlsoff(0+1+65536)
  79. sethi.p #gottlsdeschi(0+2), gr14
  80. setlo #gottlsdesclo(0+2), gr14
  81. ldd #tlsdesc(0+2)@(gr15, gr14), gr8
  82. calll #gettlsoff(0+2)@(gr8, gr0)
  83. sethi.p #gottlsdeschi(0+2+4096), gr14
  84. setlo #gottlsdesclo(0+2+4096), gr14
  85. ldd #tlsdesc(0+2+4096)@(gr15, gr14), gr8
  86. calll #gettlsoff(0+2+4096)@(gr8, gr0)
  87. sethi.p #gottlsdeschi(0+2+65536), gr14
  88. setlo #gottlsdesclo(0+2+65536), gr14
  89. ldd #tlsdesc(0+2+65536)@(gr15, gr14), gr8
  90. calll #gettlsoff(0+2+65536)@(gr8, gr0)
  91. lddi.p @(gr15, #gottlsdesc12(0+3)), gr8
  92. setlos #gottlsdesclo(0+3), gr14
  93. calll #gettlsoff(0+3)@(gr8, gr0)
  94. lddi.p @(gr15, #gottlsdesc12(0+3+4096)), gr8
  95. setlos #gottlsdesclo(0+3+4096), gr14
  96. calll #gettlsoff(0+3+4096)@(gr8, gr0)
  97. lddi.p @(gr15, #gottlsdesc12(0+3+65536)), gr8
  98. setlos #gottlsdesclo(0+3+65536), gr14
  99. calll #gettlsoff(0+3+65536)@(gr8, gr0)
  100. sethi #tlsmoffhi(0+4), gr9
  101. setlo #tlsmofflo(0+4), gr9
  102. sethi #tlsmoffhi(0+4+4096), gr9
  103. setlo #tlsmofflo(0+4+4096), gr9
  104. sethi #tlsmoffhi(0+4+65536), gr9
  105. setlo #tlsmofflo(0+4+65536), gr9
  106. call #gettlsoff(x+1)
  107. call #gettlsoff(x+1+4096)
  108. call #gettlsoff(x+1+65536)
  109. sethi.p #gottlsdeschi(x+2), gr14
  110. setlo #gottlsdesclo(x+2), gr14
  111. ldd #tlsdesc(x+2)@(gr15, gr14), gr8
  112. calll #gettlsoff(x+2)@(gr8, gr0)
  113. sethi.p #gottlsdeschi(x+2+4096), gr14
  114. setlo #gottlsdesclo(x+2+4096), gr14
  115. ldd #tlsdesc(x+2+4096)@(gr15, gr14), gr8
  116. calll #gettlsoff(x+2+4096)@(gr8, gr0)
  117. sethi.p #gottlsdeschi(x+2+65536), gr14
  118. setlo #gottlsdesclo(x+2+65536), gr14
  119. ldd #tlsdesc(x+2+65536)@(gr15, gr14), gr8
  120. calll #gettlsoff(x+2+65536)@(gr8, gr0)
  121. lddi.p @(gr15, #gottlsdesc12(x+3)), gr8
  122. setlos #gottlsdesclo(x+3), gr14
  123. calll #gettlsoff(x+3)@(gr8, gr0)
  124. lddi.p @(gr15, #gottlsdesc12(x+3+4096)), gr8
  125. setlos #gottlsdesclo(x+3+4096), gr14
  126. calll #gettlsoff(x+3+4096)@(gr8, gr0)
  127. lddi.p @(gr15, #gottlsdesc12(x+3+65536)), gr8
  128. setlos #gottlsdesclo(x+3+65536), gr14
  129. calll #gettlsoff(x+3+65536)@(gr8, gr0)
  130. .ifdef static_tls
  131. ldi @(gr15, #gottlsoff12(l+1)), gr9
  132. ldi @(gr15, #gottlsoff12(l+1+65536)), gr9
  133. ldi @(gr15, #gottlsoff12(i+1)), gr9
  134. ldi @(gr15, #gottlsoff12(i+1+65536)), gr9
  135. ldi @(gr15, #gottlsoff12(0+1)), gr9
  136. ldi @(gr15, #gottlsoff12(0+1+65536)), gr9
  137. ldi @(gr15, #gottlsoff12(x+1)), gr9
  138. ldi @(gr15, #gottlsoff12(x+1+65536)), gr9
  139. setlos #gottlsofflo(l+1+4096), gr8
  140. ld #tlsoff(l+1+4096)@(gr15, gr8), gr9
  141. sethi #gottlsoffhi(i+1+4096), gr8
  142. setlo #gottlsofflo(i+1+4096), gr8
  143. ld #tlsoff(i+1+4096)@(gr15, gr8), gr9
  144. .endif