Index: libc/arch/ppc32/src/thread.c
===================================================================
--- libc/arch/ppc32/src/thread.c	(revision 90f5d6412912019a8e1263bdb33fdd4742b17e76)
+++ libc/arch/ppc32/src/thread.c	(revision 9a71438e6a7b9eb30d478121dfec5bc6220f3d02)
@@ -38,14 +38,13 @@
 tcb_t * __alloc_tls(void **data, size_t size)
 {
-	tcb_t *tcb;
-	
-	*data = malloc(sizeof(tcb_t) + size);
-	tcb = (tcb_t *) (*data + size);
-	return tcb;
+	tcb_t *result;
+
+	result = malloc(sizeof(tcb_t) + size);
+	*data = ((void *)result) + sizeof(tcb_t);
+	return result;
 }
 
 void __free_tls_arch(tcb_t *tcb, size_t size)
 {
-	void *start = ((void *) tcb) - size;
-	free(start);
+	free(tcb);
 }
