The s_idecode prefetch logic checks only for tflag and int_pending, but not for pending MMU traps.
If the instruction read of an RR instruction, like ROR R0 or ADD R0,R1 causes an MMU trap, this trap will not executed.
In fact, it's not even queued, it's lost.
Detected in a code review.
No practical consequences, MMU traps are not used by any OS.
But clearly a BUG, such cases should trigger an MMU trap.
The
s_idecode
prefetch logic checks only for tflag and int_pending, but not for pending MMU traps.If the instruction read of an RR instruction, like
ROR R0
orADD R0,R1
causes an MMU trap, this trap will not executed.In fact, it's not even queued, it's lost.
Detected in a code review.
No practical consequences, MMU traps are not used by any OS.
But clearly a BUG, such cases should trigger an MMU trap.