summaryrefslogtreecommitdiffstats
path: root/lib/libc/amd64
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2016-09-16 10:04:28 +0000
committerkib <kib@FreeBSD.org>2016-09-16 10:04:28 +0000
commitdddfacf75a4db48e5a557d2ca395fcf246f37b70 (patch)
treeea58970436c8250f3ddf63bd4caeee598547c297 /lib/libc/amd64
parent4a1f75f05099b39074e0485603c771634cb71527 (diff)
downloadFreeBSD-src-dddfacf75a4db48e5a557d2ca395fcf246f37b70.zip
FreeBSD-src-dddfacf75a4db48e5a557d2ca395fcf246f37b70.tar.gz
MFC r304285:
Implement userspace gettimeofday(2) with HPET timecounter.
Diffstat (limited to 'lib/libc/amd64')
-rw-r--r--lib/libc/amd64/sys/Makefile.inc2
-rw-r--r--lib/libc/amd64/sys/__vdso_gettc.c70
2 files changed, 1 insertions, 71 deletions
diff --git a/lib/libc/amd64/sys/Makefile.inc b/lib/libc/amd64/sys/Makefile.inc
index d5d416f..078a017 100644
--- a/lib/libc/amd64/sys/Makefile.inc
+++ b/lib/libc/amd64/sys/Makefile.inc
@@ -2,7 +2,7 @@
# $FreeBSD$
SRCS+= amd64_get_fsbase.c amd64_get_gsbase.c amd64_set_fsbase.c \
- amd64_set_gsbase.c __vdso_gettc.c
+ amd64_set_gsbase.c
MDASM= vfork.S brk.S cerror.S exect.S getcontext.S \
sbrk.S setlogin.S sigreturn.S
diff --git a/lib/libc/amd64/sys/__vdso_gettc.c b/lib/libc/amd64/sys/__vdso_gettc.c
deleted file mode 100644
index 1899b21..0000000
--- a/lib/libc/amd64/sys/__vdso_gettc.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*-
- * Copyright (c) 2012 Konstantin Belousov <kib@FreeBSD.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. 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 AUTHOR 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 AUTHOR 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <sys/elf.h>
-#include <sys/time.h>
-#include <sys/vdso.h>
-#include <machine/cpufunc.h>
-#include "libc_private.h"
-
-static u_int
-__vdso_gettc_low(const struct vdso_timehands *th)
-{
- u_int rv;
-
- __asm __volatile("lfence; rdtsc; shrd %%cl, %%edx, %0"
- : "=a" (rv) : "c" (th->th_x86_shift) : "edx");
- return (rv);
-}
-
-static u_int
-__vdso_rdtsc32(void)
-{
- u_int rv;
-
- __asm __volatile("lfence;rdtsc" : "=a" (rv) : : "edx");
- return (rv);
-}
-
-#pragma weak __vdso_gettc
-u_int
-__vdso_gettc(const struct vdso_timehands *th)
-{
-
- return (th->th_x86_shift > 0 ? __vdso_gettc_low(th) :
- __vdso_rdtsc32());
-}
-
-#pragma weak __vdso_gettimekeep
-int
-__vdso_gettimekeep(struct vdso_timekeep **tk)
-{
-
- return (_elf_aux_info(AT_TIMEKEEP, tk, sizeof(*tk)));
-}
OpenPOWER on IntegriCloud