验证CPU是否支持sysenter和sysexit指令

原文链接: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 可以查看这些信息


转载于:https://my.oschina.net/toyandong/blog/533793

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值