Skip to content

Commit

Permalink
V4L/DVB: dvb: l64781.ko broken with gcc 4.5
Browse files Browse the repository at this point in the history
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 <rguenther@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
CC: stable@kernel.org
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Richard Guenther authored and Mauro Carvalho Chehab committed Feb 19, 2010
1 parent f8b55f2 commit c1db53b
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions drivers/media/dvb/frontends/l64781.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit c1db53b

Please sign in to comment.