Commit c1db53b3 authored by Richard Guenther's avatar Richard Guenther Committed by Mauro Carvalho Chehab

V4L/DVB: dvb: l64781.ko broken with gcc 4.5

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: default avatarRichard Guenther <rguenther@suse.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
CC: stable@kernel.org
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent f8b55f25
...@@ -192,8 +192,8 @@ static int apply_frontend_param (struct dvb_frontend* fe, struct dvb_frontend_pa ...@@ -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 *= qam_tab[p->constellation];
spi_bias /= p->code_rate_HP + 1; spi_bias /= p->code_rate_HP + 1;
spi_bias /= (guard_tab[p->guard_interval] + 32); spi_bias /= (guard_tab[p->guard_interval] + 32);
spi_bias *= 1000ULL; spi_bias *= 1000;
spi_bias /= 1000ULL + ppm/1000; spi_bias /= 1000 + ppm/1000;
spi_bias *= p->code_rate_HP; spi_bias *= p->code_rate_HP;
val0x04 = (p->transmission_mode << 2) | p->guard_interval; val0x04 = (p->transmission_mode << 2) | p->guard_interval;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment