From: NIIBE Y. <gn...@m1...> - 2001-08-05 08:26:18
|
Last year, we've implemented using FPU in kernel. That is, not assuming kernel doesn't use FPU, we enable drivers to use FPU. This was done because GCC at that time, uses FPU for division. In the code, we use init_task as special task, and when kernel uses FPU, we pretend as if "user process init_task" uses FPU. It's a kind of hack. The kernel has been changed since, this doesn't work any more, because of special kernel thread. So far so good, as kernel threads do not do general things. However, now we have ksoftirqd kernel threads, and it handles software interrupts (or bottom halves). This means, ksoftirqd calls routines of drivers, and if we need using FPU in kernel, we need another approach. I think that we should remove the support of FPU in kernel to clean up things. I think that we can assume GCC provide some way of not using FPU for division. Honestly speaking, I couldn't find a good way to extend current implementation to general kernel FPU support (more than one kernel task uses FPU). If we really need this, I think that it is good design general one rather than extending current one. Comments? Opinions? Does anyone have driver which uses FPU? -- |