Two days ago I commited some code to NetBSD's CVS HEAD to let the mac68k port be built with soft-float support. All this work was originally done by Bruce O'Neel, so if you want to thank somebody, thank him. In order to build a release with this feature enabled, it's as easy as passing the -V MKSOFTFLOAT=yes argument to the build.sh script.

But what's known as soft-float? Simply put, it's a way to build binaries that do not use the FPU at all. The GCC compiler has an special option to do this, named -msoft-float. When used, it translates all FPU instructions into calls to regular subroutines (provided in the C library), which provide emulation code.

Ok but... why is soft-float useful in the mac68k port? The 60840LC chip has a hardware bug that makes it impossible to implement an FPU emulator in kernel space; this chip is included in many Macintosh boxes, like the Performa 630 I have. (AFAIUI, there is a way to workaround this issue, but it's not implemented in NetBSD...) So, by using a NetBSD release built with soft-float, you can run it on one of those computers! Isn't it cool? ;-)

Comments from the original Blogger-hosted post: