gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:07:02 24 4
gpt4 key购买 nike

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

有谁知道 Linux 的哪个软件元素(加载程序、反汇编程序或其他软件)负责检测非法指令?

我的目标是修改那个软件,让 Linux 不再提示我的指令。如果有人知道抑制此类错误的更简单方法,那也将非常有用。

最佳答案

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

  • strapvec 指向Handle_exception ,它会进行大量簿记以避免破坏用户空间,然后将陷阱定向到正确的位置。
  • 对于非法指令陷阱,您将跳转到 the excp_vect_table jump table ,处理所有无聊的陷阱。
  • 这由 scause 索引,在本例中指向 do_trap_insn_illegal .
  • do_trap_insn_illegal 只是一个通用的 Linux 陷阱处理程序,它将 SIGILL 传递给导致陷阱的任何对象。这可能会向用户空间任务、内核任务发出信号,或者直接让内核 panic 。

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

关于linux - 哪个 Linux 实体负责生成非法指令陷阱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51827928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com