Maybe that was confusing. Here it is in the NodeJS mainline code:
I configured OpenWRT to build NodeJS in menuconfig which grabs the source from nodejs.org and it works.
This is incorrect as it defaults to soft-float unless hard-float is specifically set. See above.
Incorrect. This is not a bug or a crash.
MIPS floating points do no support all operations in hardware. A MIPS implementation is free to not implement certain cases in software. For example denormalized numbers - that’s numbers very close to zero - are not handled in hardware. In such a case MIPS FPU will throw an unimplemented exception and expects the exception handler to do deal with the issue. The software in the Linux kernel handles all this and more, it’s capable of fully emulating a hardware floating point unit. That is code built for hardware floating point will always run correctly, even on systems without an FPU.
https://www.linux-mips.org/wiki/Floating_point#The_Linux_kernel_and_floating_point