Subject: Floating point in the kernel
To: None <tech-kern@netbsd.org>
From: Andreas Gustafsson <gson@araneus.fi>
List: tech-kern
Date: 09/18/1998 15:25:37
I am trying to write a software modem, using NetBSD/i386 as the
development platform.  The code already mostly works as a user-mode
process, but the lack of real-time scheduling guarantees prevents it
from operating reliably when the system is under load.  Therefore, I
am trying to turn it into a loadable kernel module, hoping this will
help me achieve a low enough latency.

My problem is that when I do this, the kernel panics with 
"npxsave: masked".  My modem code relies heavily on floating point,
and apparently NetBSD/i386 does not fully support the use of floating
point in kernel code.

I know and understand that floating point should generally be avoided
in the kernel, but in a heavy-duty signal processing application like
this, there really is no alternative.  Also, I see that there already
exist a few pieces of floating point in obscure parts of the kernel
source tree (e.g., arch/x68k/dev/bsd_audio.c, netiso/clnp_frag.c).

So, I am wondering, is this lack of support for floating point in the
kernel on the i386 port

 a) considered a bug or a feature?
 b) fixable?
 c) affecting other NetBSD ports besides i386?
 d) affecting other modern Unix-like systems besides NetBSD?

-- 
Andreas Gustafsson, gson@araneus.fi