1 #include <features.h> /* For __GNUC_PREREQ. */
5 asm ("movl %%gs:0,%0\n\t" \
6 "subl $" #x "@tpoff,%0" \
10 #if defined PIC && !__GNUC_PREREQ (5,0)
13 asm ("movl %%gs:0,%0\n\t" \
14 "subl " #x "@gottpoff(%%ebx),%0" \
22 "1:\tmovl (%%esp), %%ebx\n\t" \
25 "addl $_GLOBAL_OFFSET_TABLE_, %%ebx\n\t" \
26 "movl %%gs:0,%0\n\t" \
27 "subl " #x "@gottpoff(%%ebx),%0" \
28 : "=r" (__l), "=&b" (__b)); \
32 #if defined PIC && !__GNUC_PREREQ (5,0)
34 ({ int *__l, __c, __d; \
35 asm ("leal " #x "@tlsldm(%%ebx),%%eax\n\t" \
36 "call ___tls_get_addr@plt\n\t" \
37 "leal " #x "@dtpoff(%%eax), %%eax" \
38 : "=a" (__l), "=&c" (__c), "=&d" (__d)); \
42 ({ int *__l, __b, __c, __d; \
45 "1:\tmovl (%%esp), %%ebx\n\t" \
48 "addl $_GLOBAL_OFFSET_TABLE_, %%ebx\n\t" \
49 "leal " #x "@tlsldm(%%ebx),%%eax\n\t" \
50 "call ___tls_get_addr@plt\n\t" \
51 "leal " #x "@dtpoff(%%eax), %%eax" \
52 : "=a" (__l), "=&b" (__b), "=&c" (__c), "=&d" (__d)); \
56 #if defined PIC && !__GNUC_PREREQ (5,0)
58 ({ int *__l, __c, __d; \
59 asm ("leal " #x "@tlsgd(%%ebx),%%eax\n\t" \
60 "call ___tls_get_addr@plt\n\t" \
62 : "=a" (__l), "=&c" (__c), "=&d" (__d)); \
66 ({ int *__l, __b, __c, __d; \
69 "1:\tmovl (%%esp), %%ebx\n\t" \
72 "addl $_GLOBAL_OFFSET_TABLE_, %%ebx\n\t" \
73 "leal " #x "@tlsgd(%%ebx),%%eax\n\t" \
74 "call ___tls_get_addr@plt\n\t" \
76 : "=a" (__l), "=&b" (__b), "=&c" (__c), "=&d" (__d)); \