[libre-riscv-dev] Handling Interrupts

Yehowshua yimmanuel3 at gatech.edu
Sat May 9 18:23:58 BST 2020

One thing I just realized that I’ve never done in any of the RTL CPUs I’ve worked with is enable interrupts.

How are interrupts done in RTL? As soon as the CPU controller sees that EINT is high, does it(upon the next clock boundary), flush the pipeline and immediately jump to the handler?

I’m aware that there can be external hardware such as a PLIC to arbitrate interrupts, I’m just not certain about the actual CPU RTL - what it would do. That is, if the CPU immediately jumps to the handler address - or if it bothers to save a few register first( this might depend on the actual ISA itself too).

I see that for MIPS(link below), there is a dedicated area in memory to dump the current GPR values.

https://courses.engr.illinois.edu/cs232/sp2012/section/disc5.pdf <https://courses.engr.illinois.edu/cs232/sp2012/section/disc5.pdf>


More information about the libre-riscv-dev mailing list