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寄存器來指向允許訪問所有物理內存的頁表,則這樣就破壞了用戶/內核之間的隔離機制。

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