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

[pbsd-mg2] Re: successful self make build



suz@hpc.bs1.fc.nec.co.jp writes:
> 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
> もダメです。こっちの方の方が対応が難しいと思う。

lib/libc/arch/mips/gen/Makefile.incで以下のようにsoftfloat用のソースを使
うようになっているので大丈夫ではないでしょうか?

.if  (${MACHINE} == "hpcmips")
SRCS+=  sf_fabs.c frexp.c infinity.c sf_isinf.c sf_ldexp.c sf_modf.c
SRCS+=  sf_flt_rounds.c sf_fpgetmask.c sf_fpgetround.c sf_fpgetsticky.c
        sf_fpsetmask.c sf_fpsetround.c sf_fpsetsticky.c
.else
SRCS+=  fabs.S frexp.c infinity.c isinf.S ldexp.S modf.S
SRCS+=  flt_rounds.c fpgetmask.c fpgetround.c fpgetsticky.c fpsetmask.c
        fpsetround.c fpsetsticky.c
.endif

これらの変更をしたのは鈴木(康)さんではないですか:-)

ちなみに、${DESTDIR}/usr/libで以下のコマンドを実行してみましたが、FPA命
令(cp1命令)は検出できませんでした。

% mipsel-netbsd-objdump -d *.a  | awk '{print $3}' | grep c1

篠原