2 .global __tlsdesc_static
3 .hidden __tlsdesc_static
4 .type __tlsdesc_static,%function
8 # size_t __tlsdesc_dynamic(size_t *a)
10 # struct {size_t modidx,off;} *p = (void*)a[1];
11 # size_t *dtv = *(size_t**)(tp - 8);
12 # return dtv[p->modidx] + p->off - tp;
14 .global __tlsdesc_dynamic
15 .hidden __tlsdesc_dynamic
16 .type __tlsdesc_dynamic,%function
22 ld.d $t2
, $tp
, -8 # t2=dtv
24 ld.d $a0
, $a0
, 8 # a0=&{modidx,off}
25 ld.d $t1
, $a0
, 8 # t1=off
26 ld.d $a0
, $a0
, 0 # a0=modidx
27 slli.d $a0
, $a0
, 3 # a0=8*modidx
29 add.d $a0
, $a0
, $t2
# a0=dtv+8*modidx
30 ld.d $a0
, $a0
, 0 # a0=dtv[modidx]
31 add.d $a0
, $a0
, $t1
# a0=dtv[modidx]+off
32 sub.d $a0
, $a0
, $tp
# a0=dtv[modidx]+off-tp