Index: kernel/generic/include/proc/task.h
===================================================================
--- kernel/generic/include/proc/task.h	(revision 6b10dab6510950964fc02ac960103bbaedf76314)
+++ kernel/generic/include/proc/task.h	(revision dd8d5a73bdea8475dd6109269d442c9d31c454a6)
@@ -145,5 +145,12 @@
 #endif
 
-extern sysarg_t sys_task_get_id(task_id_t *);
+#ifdef __32_BITS__
+extern sysarg_t sys_task_get_id(sysarg64_t *);
+#endif
+
+#ifdef __64_BITS__
+extern sysarg_t sys_task_get_id(void);
+#endif
+
 extern sysarg_t sys_task_set_name(const char *, size_t);
 
Index: kernel/generic/src/ipc/kbox.c
===================================================================
--- kernel/generic/src/ipc/kbox.c	(revision 6b10dab6510950964fc02ac960103bbaedf76314)
+++ kernel/generic/src/ipc/kbox.c	(revision dd8d5a73bdea8475dd6109269d442c9d31c454a6)
@@ -192,5 +192,4 @@
 }
 
-
 /** Connect phone to a task kernel-box specified by id.
  *
Index: kernel/generic/src/proc/task.c
===================================================================
--- kernel/generic/src/proc/task.c	(revision 6b10dab6510950964fc02ac960103bbaedf76314)
+++ kernel/generic/src/proc/task.c	(revision dd8d5a73bdea8475dd6109269d442c9d31c454a6)
@@ -290,13 +290,15 @@
 }
 
-/** Syscall for reading task ID from userspace.
- *
- * @param uspace_task_id Userspace address of 8-byte buffer
- *                       where to store current task ID.
+#ifdef __32_BITS__
+
+/** Syscall for reading task ID from userspace (32 bits)
+ *
+ * @param uspace_taskid Pointer to user-space buffer
+ *                      where to store current task ID.
  *
  * @return Zero on success or an error code from @ref errno.h.
  *
  */
-sysarg_t sys_task_get_id(task_id_t *uspace_task_id)
+sysarg_t sys_task_get_id(sysarg64_t *uspace_taskid)
 {
 	/*
@@ -304,7 +306,27 @@
 	 * the lifespan of the task.
 	 */
-	return (sysarg_t) copy_to_uspace(uspace_task_id, &TASK->taskid,
+	return (sysarg_t) copy_to_uspace(uspace_taskid, &TASK->taskid,
 	    sizeof(TASK->taskid));
 }
+
+#endif  /* __32_BITS__ */
+
+#ifdef __64_BITS__
+
+/** Syscall for reading task ID from userspace (64 bits)
+ *
+ * @return Current task ID.
+ *
+ */
+sysarg_t sys_task_get_id(void)
+{
+	/*
+	 * No need to acquire lock on TASK because taskid remains constant for
+	 * the lifespan of the task.
+	 */
+	return TASK->taskid;
+}
+
+#endif  /* __64_BITS__ */
 
 /** Syscall for setting the task name.
Index: uspace/lib/c/generic/task.c
===================================================================
--- uspace/lib/c/generic/task.c	(revision 6b10dab6510950964fc02ac960103bbaedf76314)
+++ uspace/lib/c/generic/task.c	(revision dd8d5a73bdea8475dd6109269d442c9d31c454a6)
@@ -47,8 +47,14 @@
 task_id_t task_get_id(void)
 {
+#ifdef __32_BITS__
 	task_id_t task_id;
 	(void) __SYSCALL1(SYS_TASK_GET_ID, (sysarg_t) &task_id);
 	
 	return task_id;
+#endif  /* __32_BITS__ */
+	
+#ifdef __64_BITS__
+	return (task_id_t) __SYSCALL0(SYS_TASK_GET_ID);
+#endif  /* __64_BITS__ */
 }
 
