tlsdyn-o32-2.s 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. .file 1 "tlsbin-o32.s"
  2. .abicalls
  3. .text
  4. .align 2
  5. .globl other
  6. .ent other
  7. .type other,@function
  8. other:
  9. .frame $fp,16,$31
  10. .mask 0x40000000,-8
  11. .fmask 0x00000000,0
  12. .set noreorder
  13. .cpload $25
  14. .set reorder
  15. addiu $sp,$sp,-16
  16. sw $fp,8($sp)
  17. move $fp,$sp
  18. .cprestore 0
  19. # General Dynamic
  20. lw $25,%call16(__tls_get_addr)($28)
  21. addiu $4,$28,%tlsgd(tlsbin_gd)
  22. jal $25
  23. lw $25,%call16(__tls_get_addr)($28)
  24. addiu $4,$28,%tlsgd(tlsvar_gd)
  25. jal $25
  26. # Local Dynamic
  27. lw $25,%call16(__tls_get_addr)($28)
  28. addiu $4,$28,%tlsldm(tlsbin_ld)
  29. jal $25
  30. move $2,$2 # Arbitrary instructions
  31. lui $3,%dtprel_hi(tlsbin_ld)
  32. addiu $3,$3,%dtprel_lo(tlsbin_ld)
  33. addu $3,$3,$2
  34. # Initial Exec
  35. .set push
  36. .set mips32r2
  37. rdhwr $2, $5
  38. .set pop
  39. lw $3,%gottprel(tlsbin_ie)($28)
  40. addu $3,$3,$2
  41. lw $3,%gottprel(tlsvar_ie)($28)
  42. addu $3,$3,$2
  43. # Local Exec
  44. .set push
  45. .set mips32r2
  46. rdhwr $2, $5
  47. .set pop
  48. lui $3,%tprel_hi(tlsbin_le)
  49. addiu $3,$3,%tprel_lo(tlsbin_le)
  50. addu $3,$3,$2
  51. move $sp,$fp
  52. lw $fp,8($sp)
  53. addiu $sp,$sp,16
  54. j $31
  55. .end other