tlsld.s 959 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. .section ".tbss","awT",@nobits
  2. .p2align 3
  3. pad: .space 8
  4. .global a
  5. a: .space 8
  6. .global b
  7. b: .space 8
  8. .global c
  9. c: .space 8
  10. .global d
  11. d: .space 8
  12. z2: .space 8
  13. z3: .space 8
  14. .text
  15. .globl _start
  16. _start:
  17. #Small model OpenPower
  18. addi 3,2,.La@toc
  19. bl __tls_get_addr(.La@tlsld)
  20. nop
  21. .section .toc,"aw",@progbits
  22. .p2align 3
  23. .La:
  24. .quad a@dtpmod
  25. .quad 0
  26. .text
  27. #Medium mode ELF
  28. addis 3,2,b@got@tlsld@ha
  29. addi 3,3,b@got@tlsld@l
  30. bl __tls_get_addr(b@tlsld)
  31. nop
  32. #PCrel, with dtprel access to vars
  33. pla 3,c@got@tlsld@pcrel
  34. bl __tls_get_addr@notoc(c@tlsld)
  35. paddi 9,3,z2@dtprel
  36. pld 10,z3@got@dtprel@pcrel
  37. add 10,10,3
  38. #All of the above using the same symbol
  39. addis 3,2,.Ld@toc@ha
  40. addi 3,3,.Ld@toc@l
  41. bl __tls_get_addr(.Ld@tlsld)
  42. nop
  43. .section .toc,"aw",@progbits
  44. .p2align 3
  45. .Ld:
  46. .quad d@dtpmod
  47. .quad 0
  48. .text
  49. addis 3,2,d@got@tlsld@ha
  50. addi 3,3,d@got@tlsld@l
  51. bl __tls_get_addr(d@tlsld)
  52. nop
  53. pla 3,d@got@tlsld@pcrel
  54. bl __tls_get_addr@notoc(d@tlsld)