kernel: add k_uptime_get() as a system call

Uses new infrastructure for system calls with a 64-bit return value.

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
diff --git a/include/kernel.h b/include/kernel.h
index deefaab..8b7e230 100644
--- a/include/kernel.h
+++ b/include/kernel.h
@@ -1334,7 +1334,7 @@
  *
  * @return Current uptime.
  */
-extern s64_t k_uptime_get(void);
+__syscall s64_t k_uptime_get(void);
 
 #ifdef CONFIG_TICKLESS_KERNEL
 /**
diff --git a/kernel/sys_clock.c b/kernel/sys_clock.c
index 58213dd..51c8d46 100644
--- a/kernel/sys_clock.c
+++ b/kernel/sys_clock.c
@@ -116,7 +116,7 @@
 }
 FUNC_ALIAS(_tick_get, sys_tick_get, s64_t);
 
-s64_t k_uptime_get(void)
+s64_t _impl_k_uptime_get(void)
 {
 #ifdef CONFIG_TICKLESS_KERNEL
 	__ASSERT(_sys_clock_always_on,
@@ -125,6 +125,17 @@
 	return __ticks_to_ms(_tick_get());
 }
 
+#ifdef CONFIG_USERSPACE
+_SYSCALL_HANDLER1(k_uptime_get, ret_p)
+{
+	u64_t *ret = (u64_t *)ret_p;
+
+	_SYSCALL_MEMORY_WRITE(ret, sizeof(*ret));
+	*ret = _impl_k_uptime_get();
+	return 0;
+}
+#endif
+
 /**
  *
  * @brief Return number of ticks since a reference time