Interrupt
读写陷阱由中断引起时为 1;同步异常时为 0。
这个字段控制什么
- - 陷阱由中断引起时为 1;同步异常时为 0。
常见取值
这是同步异常,低位字段按异常原因码解释。
这是中断,低位字段按中断原因码解释。
机器陷阱原因寄存器,记录触发陷阱的事件类型和原因码。
陷阱由中断引起时为 1;同步异常时为 0。
这是同步异常,低位字段按异常原因码解释。
这是中断,低位字段按中断原因码解释。
标识最近一次异常或中断的原因码。该字段为 WLRL,只保证保存支持的异常码;保留、平台、自定义或扩展相关编码必须按适用官方表解释。
同步异常原因码 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 是地址 0x342 的 MXLEN 位 M 模式陷阱原因 CSR。最高位 Interrupt 区分中断和同步异常,低位 Exception Code 是 WLRL,只保证保存实现支持的原因码。
陷阱处理程序读取 mcause。
检查 Interrupt 位:1 表示中断原因码,0 表示同步异常原因码。
用 Exception Code 查询适用的官方原因码表,并结合 mepc/mtval 等 CSR 完成分派。
不能只看 CSR 名称判断。官方 CSR 地址表给出最低访问特权级;mcause 位于 0x342,最低访问级为 M 模式。权限不足或访问未实现 CSR 时会触发非法指令异常。
写 mcause 时不能假设任意原因码都会被保留。Exception Code 是 WLRL,只保证保存实现支持的合法原因码;读取后也必须按 Interrupt 位和官方原因码表解释。