diff --git a/libc/Android.mk b/libc/Android.mk
index 35efa5b..eb9433f 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -96,7 +96,6 @@
     stdlib/setenv.c \
     stdlib/strtod.c \
     unistd/syslog.c \
-    unistd/time.c \
 
 # Fortify implementations of libc functions.
 libc_common_src_files += \
@@ -125,6 +124,7 @@
     bionic/brk.cpp \
     bionic/chmod.cpp \
     bionic/chown.cpp \
+    bionic/clock.cpp \
     bionic/clone.cpp \
     bionic/dirent.cpp \
     bionic/dup2.cpp \
@@ -319,6 +319,7 @@
     upstream-openbsd/lib/libc/gen/ftok.c \
     upstream-openbsd/lib/libc/gen/getprogname.c \
     upstream-openbsd/lib/libc/gen/setprogname.c \
+    upstream-openbsd/lib/libc/gen/time.c \
     upstream-openbsd/lib/libc/gen/tolower_.c \
     upstream-openbsd/lib/libc/gen/toupper_.c \
     upstream-openbsd/lib/libc/locale/wcscoll.c \
diff --git a/libc/bionic/clock.cpp b/libc/bionic/clock.cpp
new file mode 100644
index 0000000..98f71af
--- /dev/null
+++ b/libc/bionic/clock.cpp
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <time.h>
+#include <sys/sysconf.h>
+#include <sys/times.h>
+
+// http://pubs.opengroup.org/onlinepubs/9699919799/functions/clock.html
+clock_t clock() {
+  tms t;
+  times(&t);
+  return (t.tms_utime + t.tms_stime) * (CLOCKS_PER_SEC / sysconf(_SC_CLK_TCK));
+}
diff --git a/libc/include/sys/times.h b/libc/include/sys/times.h
index 1b9b8b2..6ce5b55 100644
--- a/libc/include/sys/times.h
+++ b/libc/include/sys/times.h
@@ -25,6 +25,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
 #ifndef _SYS_TIMES_H_
 #define _SYS_TIMES_H_
 
@@ -34,7 +35,7 @@
 
 __BEGIN_DECLS
 
-extern clock_t times(struct tms *);
+extern clock_t times(struct tms*);
 
 __END_DECLS
 
diff --git a/libc/unistd/time.c b/libc/upstream-openbsd/lib/libc/gen/time.c
similarity index 65%
rename from libc/unistd/time.c
rename to libc/upstream-openbsd/lib/libc/gen/time.c
index 18aa62c..3a57500 100644
--- a/libc/unistd/time.c
+++ b/libc/upstream-openbsd/lib/libc/gen/time.c
@@ -28,46 +28,17 @@
  * SUCH DAMAGE.
  */
 
-#include <time.h>
+#include <sys/types.h>
+#include <sys/time.h>
 
 time_t
 time(time_t *t)
 {
 	struct timeval tt;
-	time_t ret;
 
 	if (gettimeofday(&tt, (struct timezone *)0) < 0)
-		ret = -1;
-	else
-		ret = tt.tv_sec;
-	if (t != NULL)
-		*t = ret;
-	return ret;
-}
-
-// return monotonically increasing CPU time in ticks relative to unspecified epoch
-static inline clock_t clock_now(void)
-{
-	struct timespec tm;
-	clock_gettime( CLOCK_MONOTONIC, &tm);
-	return tm.tv_sec * CLOCKS_PER_SEC + (tm.tv_nsec * (CLOCKS_PER_SEC/1e9));
-}
-
-// initialized by the constructor below
-static clock_t clock_start;
-
-// called by dlopen when .so is loaded
-__attribute__((constructor)) static void clock_crt0(void)
-{
-	clock_start = clock_now();
-}
-
-// return elapsed CPU time in clock ticks, since start of program execution
-// (spec says epoch is undefined, but glibc uses crt0 as epoch)
-clock_t
-clock(void)
-{
-	// note that if we are executing in a different thread than crt0, then the
-	// pthread_create that made us had a memory barrier so clock_start is defined
-	return clock_now() - clock_start;
+		return (-1);
+	if (t)
+		*t = (time_t)tt.tv_sec;
+	return (tt.tv_sec);
 }
