内核开发demo报错,帮忙看看什么问题

Q446512799 2019-12-18 09:50:56
 unsigned int clear_and_return_cr0(void)
{
unsigned int cr0 = 0;
unsigned int ret;
asm("movl %%cr0, %%eax":"=a"(cr0)); //这行报错
ret = cr0;
printk("cr0 = %d\n",ret);
cr0 &= 0xfffeffff;
asm("movl %%eax, %%cr0"::"a"(cr0)); //这行报错
return ret;
}


报错信息:unsupported instruction `mov'

Makefile
obj-m := mycall.o
KERNEL_VER = $(shell uname -r)
PWD := $(shell pwd)

build: kernel_modules

kernel_modules:
make -C /lib/modules/$(KERNEL_VER)/build M=$(PWD) modules

clean:
make -C /lib/modules/$(KERNEL_VER)/build M=$(PWD) clean


...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mouse_zhu 2019-12-18
  • 打赏
  • 举报
回复
这个我也不太清楚你可以研究一下。
Q446512799 2019-12-18
  • 打赏
  • 举报
回复
引用 1 楼 mouse_zhu 的回复:
应该是在64位机器上编译32位代码的原因吧 “movl” 是32位的指令
查的网上也说是这个问题,但看解决是在gcc后面加上-m32,我这make里面没有gcc啊 不知道在哪加
mouse_zhu 2019-12-18
  • 打赏
  • 举报
回复
应该是在64位机器上编译32位代码的原因吧 “movl” 是32位的指令

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧