1
0
Fork 0
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:
Stefan Lankes 2015-10-25 23:43:47 +01:00
parent d532cd3c76
commit cfee4d84b3
2 changed files with 18 additions and 6 deletions

View file

@ -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) {

View file

@ -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()) {