1 .section ".tdata", "awT", @progbits 2 .balign 32 3 .globl sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8 4 .globl sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 5 .hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 6sg1: .long 17 7sg2: .long 18 8sg3: .long 19 9sg4: .long 20 10sg5: .long 21 11sg6: .long 22 12sg7: .long 23 13sg8: .long 24 14sl1: .long 65 15sl2: .long 66 16sl3: .long 67 17sl4: .long 68 18sl5: .long 69 19sl6: .long 70 20sl7: .long 71 21sl8: .long 72 22sh1: .long 257 23sh2: .long 258 24sh3: .long 259 25sh4: .long 260 26sh5: .long 261 27sh6: .long 262 28sh7: .long 263 29sh8: .long 264 30 .text 31 .globl fn1 32 .type fn1,@function 33 .balign 64 34fn1: 35 /* Funtion prolog */ 36 stmg %r6,%r14,48(%r15) 37 bras %r13,.LTN1 38 /* Literal pool */ 39.LT1: 40.LC2: 41 .quad sg1@tlsgd 42.LC3: 43 .quad sg2@tlsgd 44.LC4: 45 .quad sl1@tlsgd 46.LC5: 47 .quad sl2@tlsgd 48.LC6: 49 .quad sh1@tlsgd 50.LC7: 51 .quad sh2@tlsgd 52.LC8: 53 .quad sH1@tlsgd 54.LC9: 55 .quad sH2@tlsgd 56.LC10: 57 .quad sl1@tlsldm 58.LC11: 59 .quad sl1@dtpoff 60.LC12: 61 .quad sl2@dtpoff 62.LC13: 63 .quad sh1@tlsldm 64.LC14: 65 .quad sh1@dtpoff 66.LC15: 67 .quad sh2@dtpoff 68.LC16: 69 .quad sH1@tlsldm 70.LC17: 71 .quad sH1@dtpoff 72.LC18: 73 .quad sH2@dtpoff 74.LC19: 75 .quad sg2@gotntpoff 76.LC20: 77 .quad sl2@gotntpoff 78.LC21: 79 .quad sh2@gotntpoff 80.LC22: 81 .quad sH2@gotntpoff 82.LTN1: 83 /* Funtion prolog */ 84 lgr %r14,%r15 85 larl %r12,_GLOBAL_OFFSET_TABLE_ 86 aghi %r15,-160 87 stg %r14,0(%r14) 88 89 /* Extract TCB */ 90 ear %r9,%a0 91 sllg %r9,%r4,32 92 ear %r9,%a1 93 94 /* GD */ 95 lg %r2,.LC2-.LT1(%r13) 96 brasl %r14,__tls_get_offset@plt:tls_gdcall:sg1 97 la %r2,0(%r2,%r9) 98 99 /* GD -> IE because variable is referenced through IE too */ 100 lg %r2,.LC3-.LT1(%r13) 101 brasl %r14,__tls_get_offset@plt:tls_gdcall:sg2 102 la %r2,0(%r2,%r9) 103 104 /* GD against local variable */ 105 lg %r2,.LC4-.LT1(%r13) 106 brasl %r14,__tls_get_offset@plt:tls_gdcall:sl1 107 la %r2,0(%r2,%r9) 108 109 /* GD -> IE against local variable referenced through IE too */ 110 lg %r2,.LC5-.LT1(%r13) 111 brasl %r14,__tls_get_offset@plt:tls_gdcall:sl2 112 la %r2,0(%r2,%r9) 113 114 /* GD against hidden and local variable */ 115 lg %r2,.LC6-.LT1(%r13) 116 brasl %r14,__tls_get_offset@plt:tls_gdcall:sh1 117 la %r2,0(%r2,%r9) 118 119 /* GD -> IE against hidden and local variable referenced through 120 IE too */ 121 lg %r2,.LC7-.LT1(%r13) 122 brasl %r14,__tls_get_offset@plt:tls_gdcall:sh2 123 la %r2,0(%r2,%r9) 124 125 /* GD against hidden but not local variable */ 126 lg %r2,.LC8-.LT1(%r13) 127 brasl %r14,__tls_get_offset@plt:tls_gdcall:sH1 128 la %r2,0(%r2,%r9) 129 130 /* GD -> IE against hidden but not local variable referenced through 131 IE too */ 132 lg %r2,.LC9-.LT1(%r13) 133 brasl %r14,__tls_get_offset@plt:tls_gdcall:sH2 134 la %r2,0(%r2,%r9) 135 136 /* LD */ 137 lg %r2,.LC10-.LT1(%r13) 138 brasl %r14,__tls_get_offset@plt:tls_ldcall:sl1 139 la %r3,0(%r2,%r9) 140 lg %r4,.LC11-.LT1(%r13) 141 la %r5,0(%r4,%r3) 142 lg %r4,.LC12-.LT1(%r13) 143 la %r5,0(%r4,%r3) 144 145 /* LD against hidden and local variables */ 146 lg %r2,.LC13-.LT1(%r13) 147 brasl %r14,__tls_get_offset@plt:tls_ldcall:sh1 148 la %r3,0(%r2,%r9) 149 lg %r4,.LC14-.LT1(%r13) 150 la %r5,0(%r4,%r3) 151 lg %r4,.LC15-.LT1(%r13) 152 la %r5,0(%r4,%r3) 153 154 /* LD against hidden but not local variables */ 155 lg %r2,.LC16-.LT1(%r13) 156 brasl %r14,__tls_get_offset@plt:tls_ldcall:sH1 157 la %r3,0(%r2,%r9) 158 lg %r4,.LC17-.LT1(%r13) 159 la %r5,0(%r4,%r3) 160 lg %r4,.LC18-.LT1(%r13) 161 la %r5,0(%r4,%r3) 162 163 /* IE against global var */ 164 lg %r3,.LC19-.LT1(%r13) 165 lg %r3,0(%r3,%r12):tls_load:sg2 166 la %r3,0(%r3,%r9) 167 168 /* IE against local var */ 169 lg %r3,.LC20-.LT1(%r13) 170 lg %r4,0(%r3,%r12):tls_load:sl2 171 la %r5,0(%r4,%r9) 172 173 /* IE against hidden and local var */ 174 lg %r3,.LC21-.LT1(%r13) 175 lg %r4,0(%r3,%r12):tls_load:sh2 176 la %r5,0(%r4,%r9) 177 178 /* IE against hidden but not local var */ 179 lg %r3,.LC22-.LT1(%r13) 180 lg %r4,0(%r3,%r12):tls_load:sH2 181 la %r5,0(%r4,%r9) 182 183 /* IE against global var with larl got access */ 184 larl %r3,sg5@indntpoff 185 lg %r3,0(%r3,%r12):tls_load:sg2 186 la %r3,0(%r3,%r9) 187 188 /* IE against local var with larl got access */ 189 larl %r3,sl5@indntpoff 190 lg %r4,0(%r3,%r12):tls_load:sl2 191 la %r5,0(%r4,%r9) 192 193 /* IE against hidden and local var with larl got access */ 194 larl %r3,sh5@indntpoff 195 lg %r4,0(%r3,%r12):tls_load:sh2 196 la %r5,0(%r4,%r9) 197 198 /* IE against hidden but not local var with larl got access */ 199 larl %r3,sH5@indntpoff 200 lg %r4,0(%r3,%r12):tls_load:sH2 201 la %r5,0(%r4,%r9) 202 203 /* IE against global var with small got access (no optimization) */ 204 lg %r3,sg5@gotntpoff(%r12) 205 la %r3,0(%r3,%r9) 206 207 /* IE against local var with small got access (no optimization) */ 208 lg %r3,sl5@gotntpoff(%r12) 209 la %r3,0(%r3,%r9) 210 211 /* IE against hidden and local var with small got access 212 (no optimization) */ 213 lg %r3,sh5@gotntpoff(%r12) 214 la %r3,0(%r3,%r9) 215 216 /* IE against hidden but not local var with small got access 217 (no optimization) */ 218 lg %r3,sH5@gotntpoff(%r12) 219 la %r3,0(%r3,%r9) 220 221 /* Function epilog */ 222 lmg %r6,%r14,208(%r15) 223 br %r14 224 225