Re: How can I link the kernel with libgcc ?

From: Carlos Munoz
Date: Thu Mar 09 2006 - 22:22:57 EST


Carlos Munoz wrote:

Lee Revell wrote:

On Thu, 2006-03-09 at 20:45 -0500, Valdis.Kletnieks@xxxxxx wrote:


On Thu, 09 Mar 2006 17:44:16 PST, Carlos Munoz said:


I'm writing an audio driver and the hardware requires floating point arithmetic. When I build the kernel I get the following errors at link time:

Tough break, that. You sure you can't figure a way to either push the
floating point out to userspace


Audio drivers should never have to directly manipulate the samples -
they just manage the DMA buffers and interrupts and wake up the process
at the right time. Mixing, routing, volume control, DSP go in
userspace.

Lee



Hi Lee,

Unfortunately, the driver needs to populate several coefficient tables for the hardware to perform silence suppression and other advance features. The values for these tables are calculated using log10 operations. I don't see a clean way to push these operations to user space without the need for custom applications that build the tables and pass them to the driver.

Thanks,


Carlos Munoz

Anyway,

I figured out how to get the driver to use floating point operations. I included source code (from an open source math library) for the log10 function in the driver. Then I added the following lines to the file arch/sh/kernel/sh_ksyms.c:

DECLARE_EXPORT(__subdf3);
DECLARE_EXPORT(__muldf3);
DECLARE_EXPORT(__divdf3);
DECLARE_EXPORT(__adddf3);
DECLARE_EXPORT(__floatsidf);
DECLARE_EXPORT(__eqdf2);
DECLARE_EXPORT(__fixdfsi);

Everything works now.

Thanks,


Carlos Munoz
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/