[alsa-devel] [PATCH] ASoC: prevent compilers from optimising pll calculation into __aeabi__uldivmod
tiwai at suse.de
Wed Apr 27 10:41:55 CEST 2011
At Wed, 27 Apr 2011 16:24:44 +0800,
Barry Song wrote:
> 2011/4/27 Takashi Iwai <tiwai at suse.de>:
> > At Wed, 27 Apr 2011 00:27:32 -0700,
> > Barry Song wrote:
> >> From: Barry Song <21cnbao at gmail.com>
> >> The newest compiliers can optimize pll calculation in several codecs into __aeabi__uldivmod which doesn't exist in kernel.
> >> Then the link will fail:
> >> ERROR: "__aeabi_uldivmod" [sound/soc/codecs/snd-soc-wm8974.ko] undefined!
> >> ERROR: "__aeabi_uldivmod" [sound/soc/codecs/snd-soc-wm8940.ko] undefined!
> >> ERROR: "__aeabi_uldivmod" [sound/soc/codecs/snd-soc-wm8510.ko] undefined!
> >> This patch prevent the optimizaton by insert ASM.
> > Don't do this in the low driver level. If any, we should fix do_div()
> > instead.
> do_div is just a macro, it has no problem by itself.
It has a problem by itself because it's a macro with a side-effect :)
Could we put an asm to do_div() itself? The asm statement can be
defined depending on the compiler version.
> only while
> working together with other more codes before do_div, gcc can make
> some codes merging and cause problems.
> if do_div is a function, we'd just fix it.
Better to ask this in LKML, then.
More information about the Alsa-devel