git: f3ddb82d9a99 - main - LinuxKPI: Add static_cpu_has() implementation
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 10 Jan 2022 19:50:47 UTC
The branch main has been updated by wulf:
URL: https://cgit.FreeBSD.org/src/commit/?id=f3ddb82d9a99d36ea585d034ccbdea1dfc5b1def
commit f3ddb82d9a99d36ea585d034ccbdea1dfc5b1def
Author: Vladimir Kondratyev <wulf@FreeBSD.org>
AuthorDate: 2021-12-06 10:18:03 +0000
Commit: Vladimir Kondratyev <wulf@FreeBSD.org>
CommitDate: 2022-01-10 19:49:38 +0000
LinuxKPI: Add static_cpu_has() implementation
static_cpu_has returns true if CPU supports requested feature.
Obtained from: OpenBSD
MFC after: 1 week
Reviewed by: hselasky, manu
Differential Revision: https://reviews.freebsd.org/D33301
---
.../linuxkpi/common/include/asm/cpufeature.h | 37 ++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/sys/compat/linuxkpi/common/include/asm/cpufeature.h b/sys/compat/linuxkpi/common/include/asm/cpufeature.h
new file mode 100644
index 000000000000..049088648aa3
--- /dev/null
+++ b/sys/compat/linuxkpi/common/include/asm/cpufeature.h
@@ -0,0 +1,37 @@
+/* Public domain. */
+
+#ifndef _ASM_CPUFEATURE_H
+#define _ASM_CPUFEATURE_H
+
+#if defined(__amd64__) || defined(__i386__)
+
+#include <sys/types.h>
+#include <machine/md_var.h>
+
+#define X86_FEATURE_CLFLUSH 1
+#define X86_FEATURE_XMM4_1 2
+#define X86_FEATURE_PAT 3
+#define X86_FEATURE_HYPERVISOR 4
+
+static inline bool
+static_cpu_has(uint16_t f)
+{
+ switch (f) {
+ case X86_FEATURE_CLFLUSH:
+ return ((cpu_feature & CPUID_CLFSH) != 0);
+ case X86_FEATURE_XMM4_1:
+ return ((cpu_feature2 & CPUID2_SSE41) != 0);
+ case X86_FEATURE_PAT:
+ return ((cpu_feature & CPUID_PAT) != 0);
+ case X86_FEATURE_HYPERVISOR:
+ return ((cpu_feature2 & CPUID2_HV) != 0);
+ default:
+ return (false);
+ }
+}
+
+#define boot_cpu_has(x) static_cpu_has(x)
+
+#endif
+
+#endif