V4L/DVB: dvb: l64781.ko broken with gcc 4.5
authorRichard Guenther <rguenther@suse.de>
Tue, 9 Feb 2010 23:16:03 +0000 (20:16 -0300)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 15 Mar 2010 15:49:32 +0000 (08:49 -0700)
commit98bde14156f5e705cc0e8b18e3062656fa131bb5
treea3f9a15261990a23dd232d2fc7d7e11c17a0e197
parent487d83f91be42bef0cc65e60532da721dd832a2f
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 <rguenther@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/frontends/l64781.c