Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
以下是我在 FE310 Sifive-Hifive1-Rev B 板上的陷阱例程。
my_trap_routine: // read mcause csrr t0, mcause; // read mepc csrr t1, mepc; mret;
现在,我生成了一个加载访问错误异常,并且执行跳转到了陷阱例程中。现在如何清除处理程序内部的异常,使其不会一次又一次地跳入陷阱例程?
您必须提前异常程序计数器,以便在用户/中断代码之后返回下一条指令。
这在 RISC V 中相当简单,除非正在使用压缩指令集,在这种情况下,您必须解码异常指令以确定 PC 前进多远。
幸运的是,这是一个非常简单的解码,但您需要注意 RISC V 允许以 2 字节为增量的大小变化指令长度。