我已经阅读了riscv特权的手册,并且知道如果发生中断或异常,当前模式将保存在xPP中(x可能是M或S)。
但是我发现很难理解xstatus
中的这些xpp位。 xPP记录了以前的模式,但是 当前 模式存储在哪里?
此外,我认为本手册虽然简短,但缺乏示例。 https://riscv.org/specifications/privileged-isa/
是否有推荐的其他学习手册?
答案 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;
不幸的是,我不知道基金会的其他文件。 希望这会有所帮助