diff options
Diffstat (limited to 'nptl/sysdeps/i386/tls.h')
-rw-r--r-- | nptl/sysdeps/i386/tls.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/nptl/sysdeps/i386/tls.h b/nptl/sysdeps/i386/tls.h index eea5e30..8a1f547 100644 --- a/nptl/sysdeps/i386/tls.h +++ b/nptl/sysdeps/i386/tls.h @@ -352,6 +352,20 @@ union user_desc_init }}) +/* Call the user-provided thread function. */ +#define CALL_THREAD_FCT(descr) \ + ({ void *__res; \ + int __ignore1, __ignore2; \ + asm volatile ("subl $12, %%esp\n\t" \ + "pushl %%gs:%P4\n\t" \ + "call *%%gs:%P3\n\t" \ + "addl $16, %%esp" \ + : "=a" (__res), "=c" (__ignore1), "=d" (__ignore2) \ + : "i" (offsetof (struct pthread, start_routine)), \ + "i" (offsetof (struct pthread, arg))); \ + __res; }) + + #endif /* __ASSEMBLER__ */ #endif /* tls.h */ |