weird warning messages compiling kernel module

Submitted by Dorin
on June 12, 2005 - 7:14am

hyall

i'm sorry to intrude with such a dry topic, but here goes:
i'm compiling a homework module involving netfiltering and i get this output:

root@debian:~/pso/5# make
make -C /lib/modules/`uname -r`/build M=`pwd`
make[1]: Entering directory `/root/linux-2.6.10'
Building modules, stage 2.
MODPOST
*** Warning: "__fixunsdfsi" [/root/pso/5/tema5.ko] undefined!
*** Warning: "__adddf3" [/root/pso/5/tema5.ko] undefined!
*** Warning: "__floatsidf" [/root/pso/5/tema5.ko] undefined!
make[1]: Leaving directory `/root/linux-2.6.10'
root@debian:~/pso/5#

i noticed the adddf word appears in the source tree only in two places : asm/arm and some other thing.
all while i'm working on a plain ol' i386, and i never heard of arm (don't hold it against me!)

here are my includes:

#include linux/kernel.h
#include linux/module.h>
#include linux/fs.h>
#include asm/uaccess.h>
#include linux/cdev.h>
#include linux/spinlock.h>
#include linux/list.h>
#include linux/skbuff.h>
#include linux/ip.h>
#include linux/tcp.h>
#include linux/timer.h>

#include linux/netfilter_ipv4.h>

ideas?
am i missing out on something here?
on what the heck what?

thanx

floating point

on
June 12, 2005 - 12:47pm

These seem to be function calls gcc inserts into the instruction stream, to implement floating point operations. Especially in soft-float mode every floating point operation has to be a function call. This may be activated by the kernel people to detect illegal use of floating point in the kernel, because for several reasons (fp registers not saved on every system call to be faster, kernel has to run on machines without floating point hardware like original i386, arm and other embedded cpus, ...) floating point is not to be used inside the kernel, except to help user programs use it (context switches, exception handling, initialization, detection...). A quick googling found e.g. http://www.ussg.iu.edu/hypermail/linux/kernel/0310.1/1256.html [click on 'Next in thread' to read the answer].

So you have to abstain from using floating point types, functions and operators, e.g. emulate things like "x*0.125" by "x/8" or "x >> 3".

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.