RISC-V的CPU陷阱处理机制

作者: 橡树人 | 来源:发表于2020-12-17 22:46 被阅读0次

    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寄存器来指向允许访问所有物理内存的页表,则这样就破坏了用户/内核之间的隔离机制。

    相关文章

      网友评论

        本文标题:RISC-V的CPU陷阱处理机制

        本文链接:https://www.haomeiwen.com/subject/rpytnktx.html