1 .file 1 "tlsbin-o32.s" 2 .abicalls 3 .text 4 .align 2 5 .globl __start 6 .ent __start 7 .type __start,@function 8 __start: 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 20 # General Dynamic 21 lw $25,%call16(__tls_get_addr)($28) 22 addiu $4,$28,%tlsgd(tlsvar_gd) 23 jal $25 24 25 # Local Dynamic 26 lw $25,%call16(__tls_get_addr)($28) 27 addiu $4,$28,%tlsldm(tlsvar_ld) 28 jal $25 29 30 move $2,$2 # Arbitrary instructions 31 32 lui $3,%dtprel_hi(tlsvar_ld) 33 addiu $3,$3,%dtprel_lo(tlsvar_ld) 34 addu $3,$3,$2 35 36 # Initial Exec 37 .set push 38 .set mips32r2 39 rdhwr $2, $5 40 .set pop 41 lw $3,%gottprel(tlsvar_ie)($28) 42 addu $3,$3,$2 43 44 # Local Exec 45 .set push 46 .set mips32r2 47 rdhwr $2, $5 48 .set pop 49 lui $3,%tprel_hi(tlsvar_le) 50 addiu $3,$3,%tprel_lo(tlsvar_le) 51 addu $3,$3,$2 52 53 move $sp,$fp 54 lw $fp,8($sp) 55 addiu $sp,$sp,16 56 j $31 57 .end __start 58 59 .globl __tls_get_addr 60 __tls_get_addr: 61 j $31 62 63 .section .tbss,"awT",@nobits 64 .align 2 65 .global tlsvar_gd 66 .type tlsvar_gd,@object 67 .size tlsvar_gd,4 68 tlsvar_gd: 69 .space 4 70 .global tlsvar_ie 71 .type tlsvar_ie,@object 72 .size tlsvar_ie,4 73 tlsvar_ie: 74 .space 4 75 76 .section .tdata,"awT" 77 .align 2 78 .global tlsvar_ld 79 .hidden tlsvar_ld 80 .type tlsvar_ld,@object 81 .size tlsvar_ld,4 82 tlsvar_ld: 83 .word 1 84 .global tlsvar_le 85 .hidden tlsvar_le 86 .type tlsvar_le,@object 87 .size tlsvar_le,4 88 tlsvar_le: 89 .word 1 90