Index: uspace/libc/arch/sparc64/include/thread.h
===================================================================
--- uspace/libc/arch/sparc64/include/thread.h	(revision 00bb696504df128091618d2a7955209b9f94202f)
+++ uspace/libc/arch/sparc64/include/thread.h	(revision 74359c6cef73d72aaa161e0ca5c0c3ddd955e4bc)
@@ -34,8 +34,4 @@
  * @file
  * @brief	sparc64 TLS functions.
- *
- * The implementation is based on the IA-32 implementation which was also
- * designed by Sun and is virtually the same, except the TCB is stored in
- * %g7 (of the normal set).
  */
 
Index: uspace/libc/arch/sparc64/src/psthread.S
===================================================================
--- uspace/libc/arch/sparc64/src/psthread.S	(revision 00bb696504df128091618d2a7955209b9f94202f)
+++ uspace/libc/arch/sparc64/src/psthread.S	(revision 74359c6cef73d72aaa161e0ca5c0c3ddd955e4bc)
@@ -29,12 +29,4 @@
 #include <libarch/context_offset.h>
 
-/**
- * Both context_save_arch() and context_restore_arch() are
- * leaf-optimized procedures. This kind of optimization
- * is very important and prevents any implicit window
- * spill/fill/clean traps in these very core kernel
- * functions.
- */
-	
 .text   
 
Index: uspace/libc/arch/sparc64/src/thread.c
===================================================================
--- uspace/libc/arch/sparc64/src/thread.c	(revision 00bb696504df128091618d2a7955209b9f94202f)
+++ uspace/libc/arch/sparc64/src/thread.c	(revision 74359c6cef73d72aaa161e0ca5c0c3ddd955e4bc)
@@ -38,8 +38,18 @@
 #include <malloc.h>
 
-/** Allocate TLS & TCB for initial module threads
+/*
+ * sparc64 uses thread-local storage data structures, variant II, as described
+ * in:
+ * 	Drepper U.: ELF Handling For Thread-Local Storage, 2005
+ */
+
+/** Allocate TLS variant II data structures for a thread.
  *
- * @param data Start of data section
- * @return pointer to tcb_t structure
+ * Only static model is supported.
+ *
+ * @param data Pointer to pointer to thread local data. This is actually an
+ * 	output argument.
+ * @param size Size of thread local data.
+ * @return Pointer to TCB structure.
  */
 tcb_t * __alloc_tls(void **data, size_t size)
@@ -55,7 +65,14 @@
 }
 
+/** Free TLS variant II data structures of a thread.
+ *
+ * Only static model is supported.
+ *
+ * @param tcb Pointer to TCB structure.
+ * @param size Size of thread local data.
+ */
 void __free_tls_arch(tcb_t *tcb, size_t size)
 {
-	void *start = ((void *)tcb) - size;
+	void *start = ((void *) tcb) - size;
 	free(start);
 }
Index: uspace/libc/generic/thread.c
===================================================================
--- uspace/libc/generic/thread.c	(revision 00bb696504df128091618d2a7955209b9f94202f)
+++ uspace/libc/generic/thread.c	(revision 74359c6cef73d72aaa161e0ca5c0c3ddd955e4bc)
@@ -56,10 +56,12 @@
 extern char _tbss_end;
 
-/** Create Thread Local storage area, return pointer to TCB(ThreadControlBlock)
+/** Create TLS (Thread Local Storage) data structures.
  *
- * !! The code requires, that sections .tdata and .tbss are adjacent.
- *    It may be changed in the future.
+ * The code requires, that sections .tdata and .tbss are adjacent. It may be
+ * changed in the future.
+ *
+ * @return Pointer to TCB.
  */
-tcb_t * __make_tls(void)
+tcb_t *__make_tls(void)
 {
 	void *data;
@@ -69,6 +71,14 @@
 	tcb = __alloc_tls(&data, tls_size);
 	
+	/*
+	 * Copy thread local data from the initialization image.
+	 */
 	memcpy(data, &_tdata_start, &_tdata_end - &_tdata_start);
-	memset(data + (&_tbss_start-&_tdata_start), 0, &_tbss_end-&_tbss_start);
+	/*
+	 * Zero out the thread local uninitialized data.
+	 */
+	memset(data + (&_tbss_start - &_tdata_start), 0, &_tbss_end -
+		&_tbss_start);
+
 	return tcb;
 }
@@ -88,6 +98,4 @@
  *
  * @param uarg Pointer to userspace argument structure.
- *
- * TODO: Thread stack pages memory leak
  */
 void __thread_main(uspace_arg_t *uarg)
@@ -125,5 +133,5 @@
 	uspace_arg_t *uarg;
 
-	stack = (char *) malloc(getpagesize()*THREAD_INITIAL_STACK_PAGES_NO);
+	stack = (char *) malloc(getpagesize() * THREAD_INITIAL_STACK_PAGES_NO);
 	if (!stack)
 		return -1;
