原文链接:http://yandong.org/?p=249
0x1 写个module
static int my_init_module(void){
if (!boot_cpu_has(X86_FEATURE_SEP))
{
printk(KERN_ERR "NOT SUPPORT \n");
return 0;
}
printk(KERN_ERR "SUPPORT \n");
return 0;}
0x2 使用CPUID指令
unsigned int medx,mecx; medx=1;mecx=0;
__asm__ __volatile__("mov %0, %%eax;cpuid;mov %%edx,%0;mov %%ecx,%1"::"m"(medx),"m"(mecx)); printf("%08x %08x\n",medx,mecx); if(medx&(1<<11)) puts("fast int---sysenter!");
在调用 CPUID 指令之后,还需要查看 CPU 的 Family、Model、Stepping 属性来确认,因为据称 Pentium Pro 处理器会报告 SEP 但是却不支持 sysenter/sysexit 指令。只有 Family 大于等于 6,Model 大于等于 3,Stepping 大于等于 3 的时候,才能确认 CPU 支持 sysenter/sysexit 指令。
查看 cat /proc/cpuinfo 可以查看这些信息