From: Richard Guenther Date: Tue, 9 Feb 2010 23:16:03 +0000 (-0300) Subject: V4L/DVB: dvb: l64781.ko broken with gcc 4.5 X-Git-Tag: firefly_0821_release~10186^2~2175 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=98bde14156f5e705cc0e8b18e3062656fa131bb5;p=firefly-linux-kernel-4.4.55.git V4L/DVB: dvb: l64781.ko broken with gcc 4.5 commit c1db53b36633e6a7511dbec7c372f01a31528f0c upstream. I'm trying to fix it on the GCC side (PR43007), but the module is quite stupid in using ULL constants to operate on u32 values: static int apply_frontend_param (struct dvb_frontend* fe, struct dvb_frontend_parameters *param) { ... static const u32 ppm = 8000; u32 spi_bias; ... spi_bias *= 1000ULL; spi_bias /= 1000ULL + ppm/1000; which causes current GCC 4.5 to emit calls to __udivdi3 for i?86 again. This patch fixes this issue. Signed-off-by: Richard Guenther Signed-off-by: Greg Kroah-Hartman Signed-off-by: Mauro Carvalho Chehab --- diff --git a/drivers/media/dvb/frontends/l64781.c b/drivers/media/dvb/frontends/l64781.c index 3051b64aa17c..445fa1068064 100644 --- a/drivers/media/dvb/frontends/l64781.c +++ b/drivers/media/dvb/frontends/l64781.c @@ -192,8 +192,8 @@ static int apply_frontend_param (struct dvb_frontend* fe, struct dvb_frontend_pa spi_bias *= qam_tab[p->constellation]; spi_bias /= p->code_rate_HP + 1; spi_bias /= (guard_tab[p->guard_interval] + 32); - spi_bias *= 1000ULL; - spi_bias /= 1000ULL + ppm/1000; + spi_bias *= 1000; + spi_bias /= 1000 + ppm/1000; spi_bias *= p->code_rate_HP; val0x04 = (p->transmission_mode << 2) | p->guard_interval;