LINUX.ORG.RU

Сообщения PS_Sergey

 

использование float и double в модуле ядра

Всем доброго времени суток!

Просьба подсказать по следующему вопросу:

Пишу драйвер PCI устройства для arm-xscale-linux Версия ядра 2.6.20

В драйвере реализуеться некий алгоритм содержащий в том числе функции работающие с float

Например:

static const float scale=16.2688;
void cc_fd(int chan, float *Fd, float *ifd)
{
    long fd;
    float tmp;

    tmp = (*Fd) * scale + (*ifd);
    fd = (long)tmp;
    *ifd = (float)(tmp-fd);
    reg_write(WIRG_FD_CODE(chan),fd);
}

На этапе сборки ядра с модулем имею следующий вывод

drivers/built-in.o: In function `сс_fd':

bik12.c:(.text+0xac9fc): undefined reference to `__mulsf3'

bik12.c:(.text+0xaca04): undefined reference to `__addsf3'

bik12.c:(.text+0xaca0c): undefined reference to `__fixsfsi'

bik12.c:(.text+0xaca14): undefined reference to `__floatsisf'

bik12.c:(.text+0xaca20): undefined reference to `__subsf3'

make: *** [.tmp_vmlinux1] Ошибка 1

Насколько я понимаю компановщик не находит реализацию функций работающих с float. Поддержка операций с плавующей точкой в ядре включена (NWFPE Enabled)

Буду благодарен за совет в какую сторону копать чтоб с этим разобраться. Спасибо!

PS_Sergey
()

RSS подписка на новые темы