svn commit: r344119 - head/lib/libc/x86/sys

Konstantin Belousov kib at FreeBSD.org
Thu Feb 14 13:59:01 UTC 2019


Author: kib
Date: Thu Feb 14 13:59:00 2019
New Revision: 344119
URL: https://svnweb.freebsd.org/changeset/base/344119

Log:
  x86 __vdso_gettc(): use machine/cpufunc.h function for CPUID.
  
  Based on the discussion with:	jkim
  Sponsored by:	The FreeBSD Foundation
  MFC after:	1 week

Modified:
  head/lib/libc/x86/sys/__vdso_gettc.c

Modified: head/lib/libc/x86/sys/__vdso_gettc.c
==============================================================================
--- head/lib/libc/x86/sys/__vdso_gettc.c	Thu Feb 14 13:53:11 2019	(r344118)
+++ head/lib/libc/x86/sys/__vdso_gettc.c	Thu Feb 14 13:59:00 2019	(r344119)
@@ -54,31 +54,6 @@ __FBSDID("$FreeBSD$");
 #include "libc_private.h"
 
 static void
-cpuidp(u_int leaf, u_int p[4])
-{
-
-	__asm __volatile(
-#if defined(__i386__)
-	    "	pushl	%%ebx\n"
-#endif
-	    "	cpuid\n"
-#if defined(__i386__)
-	    "	movl	%%ebx,%1\n"
-	    "	popl	%%ebx"
-#endif
-	    : "=a" (p[0]),
-#if defined(__i386__)
-	    "=r" (p[1]),
-#elif defined(__amd64__)
-	    "=b" (p[1]),
-#else
-#error "Arch"
-#endif
-	    "=c" (p[2]), "=d" (p[3])
-	    :  "0" (leaf));
-}
-
-static void
 rdtsc_mb_lfence(void)
 {
 
@@ -100,12 +75,12 @@ rdtsc_mb_none(void)
 DEFINE_UIFUNC(static, void, rdtsc_mb, (void), static)
 {
 	u_int p[4];
-	/* Not a typo, string matches our cpuidp() registers use. */
+	/* Not a typo, string matches our do_cpuid() registers use. */
 	static const char intel_id[] = "GenuntelineI";
 
 	if ((cpu_feature & CPUID_SSE2) == 0)
 		return (rdtsc_mb_none);
-	cpuidp(0, p);
+	do_cpuid(0, p);
 	return (memcmp(p + 1, intel_id, sizeof(intel_id) - 1) == 0 ?
 	    rdtsc_mb_lfence : rdtsc_mb_mfence);
 }


More information about the svn-src-all mailing list