(toppers-users 2589) Re: SH4 FPUの使用方法を教えて下さい。

Masaki Muranaka monamour @ monaka.org
2007年 4月 5日 (木) 10:43:37 JST


おはようございます.

On 2007/04/04, at 23:53, nob_sakawa wrote:
> 以前にも似た話しがあったような気がしますけど、
> その時は、newlibがfpscr(浮動小数点演算のコントロールレジスタ)
> の初期化をしていないので誤動作することがある!
> というような話しだったかと。。?

newlibがというよりも,TOPPERS系カーネルの
スタートアップルーチンが,ということですね.
fenv.hをサポートするとかいう話だと,責任分解点が
またちょっと違ってくるかもしれませんけれども.

それとは別に,既に出ている通り,FPUレジスタの保存が
行われていないことによるリスクは内在しています.


> ただ、製品などで使うのであれば、
> 数点あるFPUの例外割り込みに対応しておかないといけない。
> となると、
> 例外が発生しないように、データをチェックする機能を持った
> 演算ライブラリーを作るのが現実的なのかも知れません。

IEEE754rでは,トラップ機構が付録に追いやられました.
おそらく多数のFPUで,トラップが起きないような設定が
可能(かつデフォルトではトラップ設定がOFF)を期待して
よいと思うのですが….

悩ましいのは,敢えてFPU例外を使いたいとユーザが思った
ときの対応でしょうか.
SH4のように,カーネル内でもFPU命令を発行する可能性が
ある場合,CPU例外ハンドラの初期化前や,カーネル内部の
処理中にFPU例外が発生する可能性があります.
// そんな特殊な場面でNaNやInfが得られた時点で,
// そのランタイムは破綻しているのですが…アプリ屋さん
// から見て,挙動が掴みづらい状況とは言えます.


> ps
> 浮動小数点演算については、
> iTRON用のライブラリーを含めた、ガイドラインみたいな物が
> あるのでしょうか?

そもそも,μITRON4.0仕様には浮動小数点型が存在しません….
需要はあると思います.
そろそろ,TOPPERSプロジェクトの中でガイドラインを
作成する時期かもですね.

--
from もなか