小编dev*_*123的帖子

RISC-V 异常与中断

我即将用 CLINT 编写我自己的 RV32I 内核。然而,有一些事情对我来说并不完全清楚。至少我在文档中找不到它。以下是特权 isa 规范对 ecall/ebreak 的说明:

ECALL 和 EBREAK 导致接收特权模式的 epc 寄存器被设置为 ECALL 或 EBREAK 指令本身的地址,而不是后续指令的地址。

所以这意味着,为 mret 设置正确的 mepc 是 SW 处理程序的责任。我认为这种行为也适用于所有其他例外。

异步中断呢?硬件是否自动将 mepc 设置为 PC+4?从我在不同软件处理程序中看到的情况来看,似乎是这样,但实际上我在文档中找不到它。

希望有人能指出我正确的文档。

verilog interrupt riscv

2
推荐指数
1
解决办法
2269
查看次数

标签 统计

interrupt ×1

riscv ×1

verilog ×1