首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪个Linux实体负责生成非法指令陷阱?

哪个Linux实体负责生成非法指令陷阱?
EN

Stack Overflow用户
提问于 2018-08-14 01:50:10
回答 1查看 343关注 0票数 0

我正在开发一个自定义版本的Rocket Chip,它具有一些额外的指令,我希望Linux能正确地处理这些指令。尽管使用这些指令的裸机程序运行良好,但Linux会使相同的基准测试崩溃,并显示“非法指令”消息。

有没有人知道Linux的哪个软件元素-加载器、反汇编程序或其他什么-负责检测非法指令?

我的目标是修改这个软件,这样Linux就不会再抱怨我的指令了。如果有人知道一种更简单的方法来抑制这种错误,那也是非常有用的。

EN

回答 1

Stack Overflow用户

发布于 2018-10-15 07:54:38

只要遇到尚未实现的指令,RISC-V实现(处理器)就会引发非法指令陷阱。这些非法指令陷阱将通过管道传输到Linux (通过陷阱委派或由机器模式软件处理后),然后流经标准陷阱处理流程:

  • strapvec指向了Handle_exception,它做了大量的记账以避免破坏用户空间,然后将陷阱定向到正确的位置。
  • 对于非法的指令陷阱,你可以通过the excp_vect_table jump table,它处理所有无聊的陷阱。
  • 这是由scause索引的,在这种情况下,它指向scause,它只是一个通用的Linux陷阱处理程序,它将SIGILL传递给导致陷阱的任何东西。这可能会向用户空间任务、内核任务发出信号,或者直接导致内核崩溃。

这里有一堆间接层,我们目前没有做任何事情,但将来可能会用来模拟未实现的指令。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51827928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档