トラップの処理方法を勉強して、まずはrv32si-p-csrをパスするようにしたい...
トラップが発生したときに、どのような処理が発生するか?
RISC-Vのトラップは4種類用意されているが、トラップが発生すると、より上位のモードに移行する。 そのときに、より高いモードに移行することを"Vertical Trap"、モードを移行しないことを"Horizontal Trap"と言う。
通常はMachine-Modeに移行するのだが、その後でより低いレベルに移行する(これはmrts/mrthにより実現される)を省略するために、mtdelegレジスタを利用して直ぐにMachine-Mode以外のレベルに移行できる。
By default, all traps at any privilege level are handled in machine mode, though a machine-mode handler can quickly redirect traps back to the appropriate level using mrts and mrth instructions (Section 3.2.2). To increase performance, implementations can provide individual read/write bits within mtdeleg to indicate that certain traps should be processed directly by a lower privilege level.