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