Re: [PATCH 1/1] drivers/staging/pi433: New driver

From: Geert Uytterhoeven
Date: Thu Jul 20 2017 - 08:29:45 EST


Hi Dan,

On Thu, Jul 20, 2017 at 1:37 PM, Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote:
> On Thu, Jul 20, 2017 at 01:23:05PM +0200, Marcus Wolf wrote:
>> below you can see the report with the error on m68k. It was sent to me from a
>> test robot of intel.
>>
>> According to my research, this problem occured, because there is no hardware
>> support for floating point on the m68k (or it was configured not to use it).
>> Therefore gcc uses an internal function, provided by libgcc. Obviously libgcc
>> wasn't linked...
>>
>> I don't know how to come arround this problem by modifying my code (except
>> reducing the accuracy of the calculation by not using floating point).
>
> I don't see any floating point? You're not allowed to use floating
> point in the kernel.

Indeed. __udivdi3 is used for 64-bit by 32-bit division.

>> Can we ignore the error or can I do something else?
>> Maybe a special include just in case of m68k can help??!?
>> I don't have an environment for building m68k.

https://www.kernel.org/pub/tools/crosstool/

> I think the answer is to use div_u64() and div64_u64 instead of
> do_div()?

do_div() is fine
The link error is not caused by do_div(), but by not using do_div() where
needed.

> Or you could just add a depend in the Kconfig.

Depend on what? !M68K? It's gonna fail on several 32-bit platforms.
Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds