[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: kernel softfloat emulation



"TAKEMURA, Shin" <takemura@netbsd.org> writes:
> 私が聞きたかったのは、既知の問題点があるかどうかなのですが、
> どうやら問題点はまったくなさそうですね。

「既知の問題点があるか」という点ですが、問題点はあると思います。

「正しいプログラムが正しく動くかどうか」についてはそれほど問題はないと思
いますが、「間違ったプログラムが間違ったように動く」かどうかについては十
分なテストはなされていませんし、また、ソースを見る限りでは問題があります。

具体的には、エラーチェックが不充分(*)なため、本来はsegmentation
violation等で異常終了するはずのプログラムが異常終了しないことがあると思
います。

	* fpemu.cのlw命令のエミュレーション等でfuword()を用いているが、
	  fuword()ではエラーチェックができない。

......ここまで書いた後で、実際にプログラムを書いて試してみましたが、本来
はSegmentation faultで異常終了するはずのプログラムが何事もなかったかのよ
うに正常終了してしまいました。

main()
{
  asm(
      ".set noreorder;"
      "c.f.d $f0,$f0;"
      "bc1f 1f;"
      "lw $0,0($0);"
      "1:"
      );
}

> というわけで、user land は hard float を default にしましょうか?

どうしたら良いか悩むところですが......

userlandのバイナリはpmaxのものを持ってくればすぐにhardfloatのテストがで
きますので、hpcmipsのデフォルトをすぐに変える必然性はないかもしれません。

逆に、softfloatのuserlandのバイナリを用意するのはそれなりに面倒なので、
しばらくはデフォルトをsoftfloatのままにしておいた方がいいように思います。

篠原