RISC-Vのシミュレータの実装を続けて、取り敢えずCSRのレジスタを参照できるようにした。
ところが、riscv-testsで単純な命令を実行してみると、どうやらtohost/fromhostの仕様でまた公開になっていない部分があるようで、うまく最後で停止してくれない。
423 : [000024dc] 00208033 : add r00,r01,r02 r01=>00000010 r02=>0000001e r00<=0000002e 424 : [000024e0] 00000e93 : addi r29,r00,0x000 r00=>00000000 r29<=00000000 425 : [000024e4] 02600e13 : addi r28,r00,0x026 r00=>00000000 r28<=00000026 426 : [000024e8] 01d01463 : bne r00,r29,0x00 r00=>00000000 r29=>00000000 427 : [000024ec] 01c01e63 : bne r00,r28,0x00 r00=>00000000 r28=>00000026 pc<=00002508 428 : [00002508] 0ff0000f : fence <Error: CSR Address 01e is invalid.> <Error: CSR Address 01e is invalid.> 429 : [0000250c] 51e0d073 : csrrwi r00,0x51e,0x01 CSR(01e)=>ffffffff CSR(01e)<=00000001 r00<=ffffffff 430 : [00002510] 0000006f : jal r00,0x00000 r00<=00002514 pc<=00002510 431 : [00002510] 0000006f : jal r00,0x00000 r00<=00002514 pc<=00002510
うーん、確かに現状のriscv-testsの中にはtohost/fromhostが0x51eというように定義されているけど、Ver.1.7の仕様書には0x780/0x781として定義されている。 もしかしたら新しいriscv-testsのコミットだとアップデートされているかもしれない。試してみる。