diff --git a/articles/20230427-tinyemu-exception.md b/articles/20230427-tinyemu-exception.md index 76f395df5dcb75c959e16f3547a95d280cc2d6ea..f45359cbca2138a5c1033903afffd2f7516dc7e7 100644 --- a/articles/20230427-tinyemu-exception.md +++ b/articles/20230427-tinyemu-exception.md @@ -166,7 +166,7 @@ void trap_handler(DECODER *decoder, enum TRAP traptype, bool isException, uint64 return; } enum CPU_PRI_LEVEL nxt_level = M; - if (cpu.pri_level == S) { + if (cpu.pri_level <= S) { if ((isException && (get_csr(medeleg) & (1 << cause))) || (!isException && (get_csr(mideleg) & (1 << cause)))) { nxt_level = S;