1/* Public domain. */ 2 3#ifndef _LINUXKPI_ASM_CPUFEATURE_H 4#define _LINUXKPI_ASM_CPUFEATURE_H 5 6#if defined(__amd64__) || defined(__i386__) 7 8#include <sys/types.h> 9#include <machine/md_var.h> 10 11#define X86_FEATURE_CLFLUSH 1 12#define X86_FEATURE_XMM4_1 2 13#define X86_FEATURE_PAT 3 14#define X86_FEATURE_HYPERVISOR 4 15 16static inline bool 17static_cpu_has(uint16_t f) 18{ 19 switch (f) { 20 case X86_FEATURE_CLFLUSH: 21 return ((cpu_feature & CPUID_CLFSH) != 0); 22 case X86_FEATURE_XMM4_1: 23 return ((cpu_feature2 & CPUID2_SSE41) != 0); 24 case X86_FEATURE_PAT: 25 return ((cpu_feature & CPUID_PAT) != 0); 26 case X86_FEATURE_HYPERVISOR: 27 return ((cpu_feature2 & CPUID2_HV) != 0); 28 default: 29 return (false); 30 } 31} 32 33#define boot_cpu_has(x) static_cpu_has(x) 34 35#endif 36 37#endif 38