next-20241028: gcc-8-defconfig : ERROR: modpost: "__aeabi_uldivmod" [drivers/media/dvb-frontends/cxd2841er.ko] undefined!

Arnd Bergmann arnd at arndb.de
Fri Nov 1 02:22:30 PDT 2024


On Thu, Oct 31, 2024, at 12:27, Dan Carpenter wrote:
> Arnd, can you take a look at this?
>
> diff --git a/drivers/media/dvb-frontends/cxd2841er.c 
> b/drivers/media/dvb-frontends/cxd2841er.c
> index d925ca24183b..e3131f5c6708 100644
> --- a/drivers/media/dvb-frontends/cxd2841er.c
> +++ b/drivers/media/dvb-frontends/cxd2841er.c
> @@ -314,7 +314,7 @@ static u32 cxd2841er_calc_iffreq_xtal(enum 
> cxd2841er_xtal xtal, u32 ifhz)
>  	u64 tmp;
> 
>  	tmp = (u64) ifhz * 16777216;
> -	do_div(tmp, ((xtal == SONY_XTAL_24000) ? 48000000 : 41000000));
> +//	do_div(tmp, ((xtal == SONY_XTAL_24000) ? 48000000 : 41000000));
> 
>  	return (u32) tmp;
>  }

Not sure what is happening exactly, probably something where
__builtin_constant_p() is inconclusive. The patch below seems
to address it without impairing readability.

      Arnd

--- a/drivers/media/dvb-frontends/cxd2841er.c
+++ b/drivers/media/dvb-frontends/cxd2841er.c
@@ -311,12 +311,8 @@ static int cxd2841er_set_reg_bits(struct cxd2841er_priv *priv,
 
 static u32 cxd2841er_calc_iffreq_xtal(enum cxd2841er_xtal xtal, u32 ifhz)
 {
-       u64 tmp;
-
-       tmp = (u64) ifhz * 16777216;
-       do_div(tmp, ((xtal == SONY_XTAL_24000) ? 48000000 : 41000000));
-
-       return (u32) tmp;
+       return div_u64(ifhz * 16777216ull,
+                       (xtal == SONY_XTAL_24000) ? 48000000 : 41000000);
 }
 
 static u32 cxd2841er_calc_iffreq(u32 ifhz)



More information about the linux-arm-kernel mailing list