[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[pbsd-mg2] Re: successful self make build
脊椎なコメントを続けてしまいますが...
> | とはいえ、互換性がないのは、ライブラリの setjmp などに load/store
> | 命令がすこし入っているという点だけなのですよね?
>
> lib/arch/mips を見てもらえばわかりますが、
>
> flt_rounds.c: __asm__("cfc1 %0,$31" : "=r" (x));
> fpgetmask.c: __asm__("cfc1 %0,$31" : "=r" (x));
> fpgetround.c: __asm__("cfc1 %0,$31" : "=r" (x));
> fpgetsticky.c: __asm__("cfc1 %0,$31" : "=r" (x));
> fpsetmask.c: __asm__("cfc1 %0,$31" : "=r" (old));
> fpsetmask.c: __asm__("ctc1 %0,$31" : : "r" (new));
> fpsetround.c: __asm__("cfc1 %0,$31" : "=r" (old));
> fpsetround.c: __asm__("ctc1 %0,$31" : : "r" (new));
> fpsetsticky.c: __asm__("cfc1 %0,$31" : "=r" (old));
> fpsetsticky.c: __asm__("ctc1 %0,$31" : : "r" (new));
>
> は、全部だめです。こちらは、cfc1 を無視でいいのかも知れません。
>
> あと、fabs.S isinf.S ldexp.S modf.S
> もダメです。こっちの方の方が対応が難しいと思う。
むむ。やはり hpcmips local な問題にはできないですか。
これって結局、-msoft-float がハンパ、ってことですね。
1. kernel で浮動小数点エミュレーション
2. -msoft-float をつけた際には、浮動小数点命令は一切入らない実行バイナリが
できるように gcc を改良
(MS のコンパイラ製品のように -msoft-float をつけると libc.a のかわりに
libc_soft-float.aがリンクされるとか)
3. クロスコンパイル環境を mipssfel-netbsd と mipsel-netbsd にわける
(mipssfel の際には lib のコンパイル時に -DWITHOUT_FPU がつくとか)
のどれかしかないのでしょうか。
4. とりあず coprocesser 1(FPU)の laod/store 命令は無視、fabs() など
が呼ばれたら illigal instruction で process が死亡
4. が暫定策にしかならないのなら、やっぱり 3. が一番簡単そうです。
Takemrua