kernel module and float

Roland Smith rsmith at
Mon Mar 3 18:31:16 UTC 2008

On Mon, Mar 03, 2008 at 01:47:32PM +0100, Jean-Yves Moulin wrote:
> Hello,
> I have a problem with gcc on amd64 platform. I need to do division and 
> multiplication with float into a kernel module. This module compile, load 
> and run without problem on i386 platform. I can compile it on amd64 but 
> when I try to load it I have:
> link_elf_obj: symbol __mulsf3 undefined
> After some search, I found that __mulsf3 (and __divsf3...etc) are builtin 
> function of gcc. In my assembly source result, I have a "call __mulsf3" but 
> the function is defined nowhere.
> I'm working on amd64 6.3-RELEASE binaries and source tree.
> Is that normal ? Do I need to use something special in order to use float 
> into kernel ? How can I solve this ?

Floating point arithmetic isn't used in the kernel for performance
reasons.[1] The kernel is compiled with -msoft-float which prevents gcc
from generating floating point instructions. In this case it uses
routines that are part of libgcc. As far as I can tell, the kernel isn't
linked with libgcc. 


[plain text _non-HTML_ PGP/GnuPG encrypted/signed email much appreciated]
pgp: 1A2B 477F 9970 BA3C 2914  B7CE 1277 EFB0 C321 A725 (KeyID: C321A725)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url :

More information about the freebsd-amd64 mailing list