Index: uspace/lib/libc/arch/amd64/src/thread.c
===================================================================
--- uspace/lib/libc/arch/amd64/src/thread.c	(revision bc1f1c27820ae147ea90ebc58ae2f9a5e0b343ca)
+++ uspace/lib/libc/arch/amd64/src/thread.c	(revision bb54db8adf4487558f5ccf7da52b4bf5f49cd8da)
@@ -37,4 +37,5 @@
 #include <thread.h>
 #include <malloc.h>
+#include <align.h>
 
 /** Allocate TLS & TCB for initial module threads
@@ -47,5 +48,6 @@
 	tcb_t *tcb;
 	
-	*data = malloc(sizeof(tcb_t) + size);
+	size = ALIGN_UP(size, &_tls_alignment);
+	*data = memalign(&_tls_alignment, sizeof(tcb_t) + size);
 
 	tcb = (tcb_t *) (*data + size);
@@ -57,4 +59,5 @@
 void __free_tls_arch(tcb_t *tcb, size_t size)
 {
+	size = ALIGN_UP(size, &_tls_alignment);
 	void *start = ((void *)tcb) - size;
 	free(start);
