Kevin D. Kissell writes:
...
> The default SGI/MIPS Linux kernel startup sets the
> "FR" bit in the CP0.Status register, which enables
> R4000-style FPU registers, which is to say a full
> compliment of 32 double-precision registers. This
> has the side-effect of making the kernel incompatible
> with the distributed mipsel binaries and the distributed
> DECstation root file system, since those binaries which
> do double-precision floating point load their initial values
> from memory as two singles. That works on an R3000
> or an R4000-with-FR=0, but not on an R4000-with-FR=1.
...
Note that the SVR4 MIPS ABI assumes FR=0 (R3000-compatible), as
do SGI IRIX "-32" ("O32") binaries (and, I believe, default gcc
binaries). SGI IRIX "-n32" and "-n64" binaries assumes FR=1 (R4000-compatible),
and also have a somewhat different register calling convention (which
affects where arguments to system calls reside).
|