Dear All,
We are using ARM SOC cortex A15. we are running 3.10.x kernel. I am
using gcc 4.6
I need floating point in kernel module. So when I build I got warning
WARNING: "__aeabi_d2iz" [/home/test/tt/hello.ko] undefined!
WARNING: "__aeabi_dmul" [/home/test/tt/hello.ko] undefined!
WARNING: "__aeabi_dsub" [/home/test/tt/hello.ko] undefined!
WARNING: "__aeabi_ddiv" [/home/test/tt/hello.ko] undefined!
WARNING: "__aeabi_f2d" [/home/test/tt/hello.ko] undefined!
static int __init hello_init(void)
{
float a=3.14;
float b=3.1222;
b=7.2/a ;
printk(KERN_INFO "Hello world! %f\n",a/b);
return 0; // Non-zero return means that the module couldn't be loaded.
}
static void __exit hello_cleanup(void)
{
printk(KERN_INFO "Cleaning up module.\n");
}
module_init(hello_init);
module_exit(hello_cleanup);
So I change in my Linux kernel make file.
arch/arm/Makefile
I remove -msoft-float .
-KBUILD_CFLAGS +=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y)
$(call cc-option,-mshort-load-bytes,$(call
cc-option,-malignment-traps,)) -msoft-float -Uarm
-KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) $(arch-y) $(tune-y)
-include asm/unified.h -msoft-float
+KBUILD_CFLAGS +=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y)
$(call cc-option,-mshort-load-bytes,$(call
cc-option,-malignment-traps,)) -Uarm
+KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) $(arch-y) $(tune-y)
-include asm/unified.h
I run my module and it work well.
So my question is .
1. Is it correct way ?
2. will it effect my performance in normal scenario ?
3. how can I check more stability?
Regards.
On Mon, Feb 03, 2014 at 09:10:57AM +0000, naveen yadav wrote:
> We are using ARM SOC cortex A15. we are running 3.10.x kernel. I am
> using gcc 4.6
>
> I need floating point in kernel module.
Try fixed point arithmetics ;). Floating point is not allowed in the
kernel.
--
Catalin