> Moving forward I see MIPS mainly used in embedded systems. I think need
> using the same kernel binary for multiple CPUs is rare, especially for the
> "same" CPU with or without FPU. Therefore having run-time detection is a
> waste of effort. Half-config-half-runtime solution is pretty messy too.
> For CPUs with the same PrID that may or may not have a FPU, we can add an
> optional FPU selection in the config.in file.b
> To be complete, I probably would add a check for the existence of FPU, if
> can infer from PrID, when FPU config option is enabled.
A few comments here:
Moving forward, MIPS CPUs will have a specific FPU-present bit
in one of the CP0 Config registers, as specified by MIPS32/MIPS64.
So the effort wasted in run-time detection will be pretty damned small.
As other people have observed, having the FPU emulator in
the kernel is necessary for full IEEE math even if one *has*
an FPU. When I bolted the Algorithmics emulator into the 2.2
kernel at MIPS, I made it optional so that people could regress
to Ralf's old not-fully-compliant mini-emulator if they were really
desperate for memory and didn't need full IEEE. Maybe I
should have just nuked it and made the full emulator mandatory.
As far as the library-versus-kernel-emulation debate is
concerned, yes, user-level emulation will always be faster.
However, you end up with a rather unpleasant configration
management problem - every application and library
distributed needs to be built both with and without FP.
And this affects *every* binary - even those that do zero
FP computation will try to save and restore FPU state
on setjmp/longjmp operations in the best of cases,
and in the existing subobtimal reality, whatever the
hell GCC calls crt0.o touches the floating control
registers on program startup. My own opinion has
been that people who care about FP performance
run their applications on CPUs with hardware FP,
so the performance advantage of library-based
FP emulation is largely wasted on those who don't
care about it. But I would understand if the Vr-Linux guys
disagreed with me on that!