Index: uspace/lib/libc/arch/amd64/src/fibril.S
===================================================================
--- uspace/lib/libc/arch/amd64/src/fibril.S	(revision fa23560fdd0e695738620af86112b84932e3b3e3)
+++ uspace/lib/libc/arch/amd64/src/fibril.S	(revision 7e956eb53e39a5b6b5da0e92b2e789a596d7fc45)
@@ -81,5 +81,5 @@
 	# Set thread local storage
 	movq OFFSET_TLS(%rdi), %rdi   # Set arg1 to TLS addr
-	movq $1, %r8
+	movq $1, %rax		# SYS_TLS_SET
 	syscall
 
Index: uspace/lib/libc/arch/amd64/src/syscall.S
===================================================================
--- uspace/lib/libc/arch/amd64/src/syscall.S	(revision fa23560fdd0e695738620af86112b84932e3b3e3)
+++ uspace/lib/libc/arch/amd64/src/syscall.S	(revision 7e956eb53e39a5b6b5da0e92b2e789a596d7fc45)
@@ -29,12 +29,29 @@
 .text
 	
-.globl __syscall
+.global __syscall
+	
+## Make a system call.
+#
+# @param rdi		First argument.
+# @param rsi		Second argument.
+# @param rdx		Third argument.
+# @param rcx		Fourth argument.
+# @param r8		Fifth argument.
+# @param r9		Sixth argument.
+# @param 8(%rsp)	Syscall number.
+#
+# @return		The return value will be stored in RAX.
+#
+__syscall:
+	#
+	# Move the syscall number into RAX.
+	movslq 8(%rsp), %rax
 
-	
-__syscall:
-	# rcx gets rewritten on syscall
-	movq %rcx, %r9
+	#
+	# Save RCX, the 4th argument, aside because RCX gets rewritten by the
+	# SYSCALL instruction.
+	#
+	movq %rcx, %r10
 	syscall
 	ret
-	
-.end __syscall
+
