RISC-V的CPU陷阱处理机制

RISC-V的CPU硬件是如何处理陷阱的?

  1. 如果陷阱是设备中断,且寄存器sstatusSIE位被清除了,则不执行下面的任何步骤;
  2. 清除SIE位来使中断不可用;
  3. 拷贝pcsepc
  4. 将当前模式保存到sstatus中的SPP位
  5. 设置scause来反映陷阱的原因;
  6. 设置模式为内核模式;
  7. 拷贝stvecpc
  8. 在新的pc处开始执行;

在处理陷阱时,CPU没有做哪些事?

  • 没有切换到内核页表;
  • 没有切换到内核的栈;
  • 没有保存除了pc意外的任何寄存器;

注意:在处理陷阱时,CPU没有做的事,全部由内核来做

CPU处理陷阱的步骤还可以进一步简化吗?

答案:不能了。
分析:
假设CPU没有切换pc,即去掉了步骤3、步骤7、步骤8,则出现了RISC-V处于内核模式,但仍运行着用户代码。如果用户代码修改satp寄存器来指向允许访问所有物理内存的页表,则这样就破坏了用户/内核之间的隔离机制。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章