3 asm ("addi %0, r23, %%tls_le(" #x ")" \
11 "1: movhi %1, %%hiadj(_gp_got - 1b) ; " \
12 "addi %1, %1, %%lo(_gp_got - 1b) ; " \
14 "ldw %1, %%tls_ie(" #x ")(%0) ; " \
16 : "=&r" (__tmp), "=&r" (__result)); \
24 extern void *__tls_get_addr (void *); \
26 "1: movhi %1, %%hiadj(_gp_got - 1b) ; " \
27 "addi %1, %1, %%lo(_gp_got - 1b) ; " \
29 "addi %0, %0, %%tls_ldm(" #x ")" \
30 : "=r" (__result), "=r" (__tmp)); \
31 __result2 = (char *)__tls_get_addr (__result); \
32 asm ("addi %0, %1, %%tls_ldo(" #x ")" \
33 : "=r" (__result3) : "r" (__result2)); \
39 extern void *__tls_get_addr (void *); \
41 "1: movhi %1, %%hiadj(_gp_got - 1b) ; " \
42 "addi %1, %1, %%lo(_gp_got - 1b) ; " \
44 "addi %0, %0, %%tls_gd(" #x ")" \
45 : "=r" (__result), "=r" (__tmp)); \
46 (int *)__tls_get_addr (__result); })