UCBが開発しているRISC-VのシミュレータSpikeや、Rocket-ChipのRTLデザインは通常はシステムコールを持っていない。
つまり、当然ながらC言語でprintf("Hello World\n");
などと書いても動作しないのだが、そこはコンパイラとフロントエンドサーバfesvr、pk(Proxy Kernel)によって肩代わりすることでこれらのシステムコールを実現している。
というわけで、vmlinuxを起動するところのデバッグをしていたのだが、昨日はブートの途中で止まっていた。 いろいろ修正した結果、メモリアクセス関連の実装がかなりナイーブな実装をしており、それで遅くなっていることが分かってきた。
修正すると、ある程度まともになってきた。 ただし、Spikeシミュレータは爆速だなあ...トレースファイルを出力するようにすれば、かなり対等な速度で動作するのだけれど...
次に、ディスク関係の実装を進めていこうかな。