1 .section ".tdata", "awT", @progbits 2 .global sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8 3 .global sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 4 .hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 5 .align 4 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 157 23sh2: .long 158 24sh3: .long 159 25sh4: .long 160 26sh5: .long 161 27sh6: .long 162 28sh7: .long 163 29sh8: .long 164 30 31 .text 32 .global _start 33 .type _start, @function 34_start: 35 entry sp, 32 36 37 /* GD */ 38 movi a8, sg1@tlsfunc 39 movi a10, sg1@tlsarg 40 callx8.tls a8, sg1@tlscall 41 42 /* GD -> IE because variable is referenced through IE too */ 43 movi a8, sg2@tlsfunc 44 movi a10, sg2@tlsarg 45 callx8.tls a8, sg2@tlscall 46 47 /* GD against local variable */ 48 movi a8, sl1@tlsfunc 49 movi a10, sl1@tlsarg 50 callx8.tls a8, sl1@tlscall 51 52 /* GD -> IE against local variable referenced through IE too */ 53 movi a8, sl2@tlsfunc 54 movi a10, sl2@tlsarg 55 callx8.tls a8, sl2@tlscall 56 57 /* GD against hidden and local variable */ 58 movi a8, sh1@tlsfunc 59 movi a10, sh1@tlsarg 60 callx8.tls a8, sh1@tlscall 61 62 /* GD -> IE against hidden and local variable referenced through 63 IE too */ 64 movi a8, sh2@tlsfunc 65 movi a10, sh2@tlsarg 66 callx8.tls a8, sh2@tlscall 67 68 /* GD against hidden but not local variable */ 69 movi a8, sH1@tlsfunc 70 movi a10, sH1@tlsarg 71 callx8.tls a8, sH1@tlscall 72 73 /* GD -> IE against hidden but not local variable referenced through 74 IE too */ 75 movi a8, sH2@tlsfunc 76 movi a10, sH2@tlsarg 77 callx8.tls a8, sH2@tlscall 78 79 /* LD */ 80 movi a8, _TLS_MODULE_BASE_@tlsfunc 81 movi a10, _TLS_MODULE_BASE_@tlsarg 82 callx8.tls a8, _TLS_MODULE_BASE_@tlscall 83 movi a12, sl1@dtpoff 84 add a12, a12, a10 85 movi a13, 2+sl2@dtpoff 86 add a13, a13, a10 87 88 /* LD against hidden and local variables */ 89 movi a12, sh1@dtpoff 90 add a12, a12, a10 91 movi a13, sh2@dtpoff+3 92 add a13, a13, a10 93 94 /* LD against hidden but not local variables */ 95 movi a12, sH1@dtpoff 96 add a12, a12, a10 97 movi a13, sH2@dtpoff+1 98 add a13, a13, a10 99 100 /* IE against global var */ 101 rur a2, THREADPTR 102 movi a3, sg2@tpoff 103 add a3, a3, a2 104 105 /* IE against local var */ 106 rur a4, THREADPTR 107 movi a5, sl2@tpoff 108 add a5, a5, a4 109 110 /* IE against hidden and local var */ 111 rur a6, THREADPTR 112 movi a7, sh2@tpoff 113 add a7, a7, a6 114 115 /* IE against hidden but not local var */ 116 rur a8, THREADPTR 117 movi a9, sH2@tpoff 118 add a9, a9, a8 119 120 retw 121