tlsbin_64.s 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. .section ".tbss", "awT", @nobits
  2. .globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8
  3. bg1: .space 4
  4. bg2: .space 4
  5. bg3: .space 4
  6. bg4: .space 4
  7. bg5: .space 4
  8. bg6: .space 4
  9. bg7: .space 4
  10. bg8: .space 4
  11. bl1: .space 4
  12. bl2: .space 4
  13. bl3: .space 4
  14. bl4: .space 4
  15. bl5: .space 4
  16. bl6: .space 4
  17. bl7: .space 4
  18. bl8: .space 4
  19. .text
  20. .globl _start
  21. .type _start,@function
  22. _start:
  23. /* Function prolog */
  24. stm %r6,%r14,24(%r15)
  25. bras %r13,.LTN1
  26. /* Literal pool */
  27. .LT1:
  28. .LC0:
  29. .quad sG6@indntpoff
  30. .LC1:
  31. .quad bg6@indntpoff
  32. .LC2:
  33. .quad bl6@indntpoff
  34. .LC3:
  35. .quad sh6@indntpoff
  36. .LC4:
  37. .quad sg3@indntpoff
  38. .LTN1:
  39. /* Function prolog */
  40. lgr %r14,%r15
  41. aghi %r15,-160
  42. stg %r14,0(%r14)
  43. /* Extract TCB */
  44. ear %r9,%a0
  45. sllg %r9,%r4,32
  46. ear %r9,%a1
  47. /* IE against global var */
  48. lg %r3,.LC0-.LT1(%r13)
  49. lg %r3,0(%r3,%r12):tls_load:sG6
  50. la %r3,0(%r3,%r9)
  51. /* IE -> LE against global var defined in exec */
  52. lg %r3,.LC1-.LT1(%r13)
  53. lg %r4,0(%r3,%r12):tls_load:bg6
  54. la %r5,0(%r4,%r9)
  55. /* IE -> LE against local var */
  56. lg %r3,.LC2-.LT1(%r13)
  57. lg %r4,0(%r3,%r12):tls_load:bl6
  58. la %r5,0(%r4,%r9)
  59. /* IE -> LE against hidden but not local var */
  60. lg %r3,.LC3-.LT1(%r13)
  61. lg %r4,0(%r3,%r12):tls_load:sh6
  62. la %r5,0(%r4,%r9)
  63. /* LE, global var defined in exec */
  64. lg %r4,.LC4-.LT1(%r13)
  65. la %r5,0(%r4,%r9)
  66. /* Function epilog */
  67. lmg %r6,%r14,208(%r15)
  68. br %r14