Interrupt
写合法读合法1=中断,0=异常;作为 cause 值的一部分按合法值语义处理。
这个字段控制什么
- - 1=中断,0=异常;作为 cause 值的一部分按合法值语义处理。
常见取值
这是同步异常,低位字段按异常原因码解释。
这是中断,低位字段按中断原因码解释。
机器陷阱原因寄存器,记录触发陷阱的事件类型和原因码。
1=中断,0=异常;作为 cause 值的一部分按合法值语义处理。
这是同步异常,低位字段按异常原因码解释。
这是中断,低位字段按中断原因码解释。
原因码;软件不能假定任意写入的原因码都会保持,必须按官方和实现支持的合法值解释。
同步异常原因码 0。
同步异常原因码 1。
同步异常原因码 2。
同步异常原因码 3。
同步异常原因码 4。
同步异常原因码 5。
同步异常原因码 6。
同步异常原因码 7。
同步异常原因码 8。
同步异常原因码 9。
同步异常原因码 11。
同步异常原因码 12。
同步异常原因码 13。
同步异常原因码 15。
同步异常原因码 16,由 Smdbltrp 扩展定义。
同步异常原因码 18。
同步异常原因码 19。
当 Interrupt 位为 1 时,低位原因码 1 表示 Supervisor 软件中断。
当 Interrupt 位为 1 时,低位原因码 3 表示 Machine 软件中断。
当 Interrupt 位为 1 时,低位原因码 5 表示 Supervisor 定时器中断。
当 Interrupt 位为 1 时,低位原因码 7 表示 Machine 定时器中断。
当 Interrupt 位为 1 时,低位原因码 9 表示 Supervisor 外部中断。
当 Interrupt 位为 1 时,低位原因码 11 表示 Machine 外部中断。
当 Interrupt 位为 1 时,低位原因码 13 表示计数器溢出中断。
mcause 是 Machine 状态、trap 与中断 CSR 中的 读写 CSR,地址为 0x342。先确认当前特权级和扩展实现情况,再根据位字段判断该 CSR 影响的架构状态。
初始化或进入相关特权流程时,软件先读取 mcause 了解当前状态。
根据字段定义只修改目标位,保留其余位的原值。
修改后再次读取或通过后续 trap/中断/上下文切换行为验证配置是否生效。
不能只看 CSR 名称判断。官方 CSR 地址编码和表格给出最低访问特权级;mcause 当前记录为 M模式,权限不足或未实现时访问会触发非法指令异常。
不要把整个 CSR 当普通整数覆盖。应只修改目标字段,保留未修改位,并按规范处理 WARL、WLRL、WPRI 或保留字段。