Hi, The soft(-float) requirement means that the program being loaded has no FPU dependency at all (i.e. it has no FPU instructions). https://elixir.bootlin.com/linux/v6.13.6/source/arch/mips/kernel/elf.c#L34
When -msoft-float is used, the processor does not use hardware floating-point instructions but relies on software emulation for floating-point arithmetic. In that case, a NaN mode (such as NaN2008) in the hardware FPU has no effect because the hardware FPU is not active and all floating-point expressions and operations are handled by functions from software libraries, such as those within glibc or other emulation libraries. How NaN values are handled in software emulation depends on the implementation of those libraries and is not related to FPU registers. If the processor uses -msingle-float, NaN2008 mode can affect the way NaN values are encoded and interpreted. When -msoft-float is active, the emulation ignores the hardware FPU and the NaN mode is not relevant because floating-point processing is left to the software implementation, not the hardware. Kind regards, Aleksandar Rakic