驗證CPU是否支持sysenter和sysexit指令

原文連接:http://yandong.org/?p=249ui

0x1 寫個modulespa

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指令code

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 指令。orm

查看 cat /proc/cpuinfo 能夠查看這些信息get

相關文章
相關標籤/搜索