aboutsummaryrefslogtreecommitdiff
path: root/nptl/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/init.c')
-rw-r--r--nptl/init.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/nptl/init.c b/nptl/init.c
index e3f51119cf..678c0a56c8 100644
--- a/nptl/init.c
+++ b/nptl/init.c
@@ -104,6 +104,12 @@ __pthread_initialize_minimal (void)
/* Unlike in the dynamically linked case the dynamic linker has not
taken care of initializing the TLS data structures. */
__libc_setup_tls (TLS_TCB_SIZE, TLS_TCB_ALIGN);
+
+ /* We must prevent gcc from being clever and move any of the
+ following code ahead of the __libc_setup_tls call. This function
+ will initialize the thread register which is subsequently
+ used. */
+ __asm __volatile ("");
#endif
/* Minimal initialization of the thread descriptor. */