RISC-V处理器在处理异常时如何检测模式?

时间:2019-10-10 03:51:56

标签: riscv

我已经阅读了riscv特权的手册,并且知道如果发生中断或异常,当前模式将保存在xPP中(x可能是M或S)。

但是我发现很难理解xstatus中的这些xpp位。 xPP记录了以前的模式,但是 当前 模式存储在哪里?

此外,我认为本手册虽然简短,但缺乏示例。 https://riscv.org/specifications/privileged-isa/

是否有推荐的其他学习手册?

1 个答案:

答案 0 :(得分:0)

我认为这将取决于您的特定risc-v实现。 例如。我正在RI5CY上工作,您可以在riscv_defines.sv中看到s,当前模式持有者定义为:

// Privileged mode
typedef enum logic[1:0] {
PRIV_LVL_M = 2'b11,
PRIV_LVL_H = 2'b10,
PRIV_LVL_S = 2'b01,
PRIV_LVL_U = 2'b00
} PrivLvl_t;

并在riscv_core.sv中实例化

PrivLvl_t    current_priv_lvl;

不幸的是,我不知道基金会的其他文件。 希望这会有所帮助