riscv-tests
のテストケースをすべて通すためにテストケースの確認をしている。
rv64si-p-icache-alias
のテストケースを確認している。基本的にはスーパーページのテストと、ページテーブルをアップデートした際のアップデート確認のためのテストが入っているようだ。
# Test that instruction memory appears to be physically addressed, i.e., # that disagreements in the low-order VPN and PPN bits don't cause the # wrong instruction to be fetched. It also tests that changing a page # mapping takes effect without executing FENCE.I.
引っかかったのは、ページテーブルをアップデートした際に、SFENCE.VMA
で同期を取り、命令キャッシュをアップデートしなければならないこと。
命令キャッシュを一度クリアしないと、同じ仮想アドレスで別の命令にぶつかってしまい実行命令を間違えてしまう。
これを修正して、無事にすべてのテストケースがPassできるようになった。今後は別のコンフィグレーションや、ランダムテスト、機能の追加を行う。
rv64ui-v-sw : PASS rv64ui-v-lb : PASS rv64ui-v-lwu : PASS rv64ui-v-fence_i : PASS rv64ui-v-sb : PASS rv64ui-v-lhu : PASS rv64ui-v-lh : PASS rv64ui-v-ld : PASS rv64uc-v-rvc : PASS ============================ PASS / TOTAL = 166 / 166 |msrh_tb_rv64_tiny | 166 / 166 (100.00%)| ============================
rv64ui-v-ld : PASS rv64ui-v-fence_i : PASS rv64ui-v-sb : PASS rv64ui-v-sw : PASS rv64ui-v-lhu : PASS rv64ui-v-sd : PASS rv64ui-v-sh : PASS rv64uc-v-rvc : PASS ============================ PASS / TOTAL = 166 / 166 |msrh_tb_rv64_small | 166 / 166 (100.00%)| ============================