Я тут разбираюсь с системными вызовами на Risc-V. ECall как-то слабовато документировал. Да и MRET местами не без вопросом, поэтому полез в исходники эмулятора spike.
Если опустить делигирование прерываний и исключений то логика выглядит следующим образом:
state.pc = state.mtvec;
state.mepc = epc;
state.mcause = t.cause();
if (t.
(
Read more... )