mirror of
https://github.com/hermitcore/libhermit.git
synced 2025-03-09 00:00:03 +01:00
check CPU for mwait and dca support
This commit is contained in:
parent
d532cd3c76
commit
cfee4d84b3
2 changed files with 18 additions and 6 deletions
|
@ -62,8 +62,10 @@ extern "C" {
|
|||
#define CPU_FEATURE_SSE2 (1 << 26)
|
||||
|
||||
// feature list 0x00000001 (ecx)
|
||||
#define CPU_FEATURE_MWAIT (1 << 3)
|
||||
#define CPU_FEATURE_SSE3 (1 << 9)
|
||||
#define CPU_FEATURE_FMA (1 << 12)
|
||||
#define CPU_FEATURE_DCA (1 << 18)
|
||||
#define CPU_FEATURE_SSE4_1 (1 << 19)
|
||||
#define CPU_FEATURE_SSE4_2 (1 << 20)
|
||||
#define CPU_FEATURE_X2APIC (1 << 21)
|
||||
|
@ -250,19 +252,27 @@ inline static uint32_t has_movbe(void) {
|
|||
}
|
||||
|
||||
inline static uint32_t has_fma(void) {
|
||||
return (cpu_info.feature2 & CPU_FEATURE_FMA);
|
||||
return (cpu_info.feature2 & CPU_FEATURE_FMA);
|
||||
}
|
||||
|
||||
inline static uint32_t has_mwait(void) {
|
||||
return (cpu_info.feature2 & CPU_FEATURE_MWAIT);
|
||||
}
|
||||
|
||||
inline static uint32_t has_sse3(void) {
|
||||
return (cpu_info.feature2 & CPU_FEATURE_SSE3);
|
||||
return (cpu_info.feature2 & CPU_FEATURE_SSE3);
|
||||
}
|
||||
|
||||
inline static uint32_t has_dca(void) {
|
||||
return (cpu_info.feature2 & CPU_FEATURE_DCA);
|
||||
}
|
||||
|
||||
inline static uint32_t has_sse4_1(void) {
|
||||
return (cpu_info.feature2 & CPU_FEATURE_SSE4_1);
|
||||
return (cpu_info.feature2 & CPU_FEATURE_SSE4_1);
|
||||
}
|
||||
|
||||
inline static uint32_t has_sse4_2(void) {
|
||||
return (cpu_info.feature2 & CPU_FEATURE_SSE4_2);
|
||||
return (cpu_info.feature2 & CPU_FEATURE_SSE4_2);
|
||||
}
|
||||
|
||||
inline static uint32_t has_x2apic(void) {
|
||||
|
|
|
@ -349,7 +349,7 @@ int cpu_detection(void) {
|
|||
a = b = c = d = 0;
|
||||
cpuid(1, &a, &b, &cpu_info.feature2, &cpu_info.feature1);
|
||||
|
||||
kprintf("CPU features: %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
|
||||
kprintf("CPU features: %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
|
||||
has_sse() ? "SSE " : "",
|
||||
has_sse2() ? "SSE2 " : "",
|
||||
has_sse3() ? "SSE3 " : "",
|
||||
|
@ -365,7 +365,9 @@ int cpu_detection(void) {
|
|||
has_xsave() ? "XSAVE " : "",
|
||||
has_osxsave() ? "OSXSAVE " : "",
|
||||
has_rdtscp() ? "RDTSCP " : "",
|
||||
has_fsgsbase() ? "FSGSBASE " : "");
|
||||
has_fsgsbase() ? "FSGSBASE " : "",
|
||||
has_mwait() ? "MWAIT " : "",
|
||||
has_dca() ? "DCA " : "");
|
||||
}
|
||||
|
||||
if (first_time && has_osxsave()) {
|
||||
|
|
Loading…
Add table
Reference in a new issue