Current 2.5.3-pre5 (or our CVS) doesn't support FPU usage in kernel.
Once I've tried to support it (and I think it worked well at that
time), but eventually, I gave up.
You can check, say, 2.4.0 implementation, if you really have
interests.
It goes like this:
We have FPU lazy switching mechanism.
Wnen kernel asks FPU use, we pretend as if the task "init" use FPU.
On Kernel -> Kernel transition, we save FPU registers on kernel stack.
This works well _provided_ the use of FPU in kernel can be seen as if
"init" use FPU.
However, the kernel thread softirqd has been introduced in 2.4.X.
With it, the bottom-half of the driver is invoked by that thread. If
bottom-half uses FPU, it results quite a mess, because it breaks
the condition (of it's "init" who use FPU).
--
|