xref: /aosp_15_r20/external/musl/src/ldso/riscv64/tlsdesc.s (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker.text
2*c9945492SAndroid Build Coastguard Worker.global __tlsdesc_static
3*c9945492SAndroid Build Coastguard Worker.hidden __tlsdesc_static
4*c9945492SAndroid Build Coastguard Worker.type __tlsdesc_static,%function
5*c9945492SAndroid Build Coastguard Worker__tlsdesc_static:
6*c9945492SAndroid Build Coastguard Worker	ld a0,8(a0)
7*c9945492SAndroid Build Coastguard Worker	jr t0
8*c9945492SAndroid Build Coastguard Worker
9*c9945492SAndroid Build Coastguard Worker.global __tlsdesc_dynamic
10*c9945492SAndroid Build Coastguard Worker.hidden __tlsdesc_dynamic
11*c9945492SAndroid Build Coastguard Worker.type __tlsdesc_dynamic,%function
12*c9945492SAndroid Build Coastguard Worker__tlsdesc_dynamic:
13*c9945492SAndroid Build Coastguard Worker	add sp,sp,-16
14*c9945492SAndroid Build Coastguard Worker	sd t1,(sp)
15*c9945492SAndroid Build Coastguard Worker	sd t2,8(sp)
16*c9945492SAndroid Build Coastguard Worker
17*c9945492SAndroid Build Coastguard Worker	ld t2,-8(tp) # t2=dtv
18*c9945492SAndroid Build Coastguard Worker
19*c9945492SAndroid Build Coastguard Worker	ld a0,8(a0)  # a0=&{modidx,off}
20*c9945492SAndroid Build Coastguard Worker	ld t1,8(a0)  # t1=off
21*c9945492SAndroid Build Coastguard Worker	ld a0,(a0)   # a0=modidx
22*c9945492SAndroid Build Coastguard Worker	sll a0,a0,3  # a0=8*modidx
23*c9945492SAndroid Build Coastguard Worker
24*c9945492SAndroid Build Coastguard Worker	add a0,a0,t2 # a0=dtv+8*modidx
25*c9945492SAndroid Build Coastguard Worker	ld a0,(a0)   # a0=dtv[modidx]
26*c9945492SAndroid Build Coastguard Worker	add a0,a0,t1 # a0=dtv[modidx]+off
27*c9945492SAndroid Build Coastguard Worker	sub a0,a0,tp # a0=dtv[modidx]+off-tp
28*c9945492SAndroid Build Coastguard Worker
29*c9945492SAndroid Build Coastguard Worker	ld t1,(sp)
30*c9945492SAndroid Build Coastguard Worker	ld t2,8(sp)
31*c9945492SAndroid Build Coastguard Worker	add sp,sp,16
32*c9945492SAndroid Build Coastguard Worker	jr t0
33