[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