On Wed, 27 Feb 2008 08:22:07 +0200 Adrian Bunk <bunk@xxxxxxxxxx> wrote: > On Tue, Feb 26, 2008 at 04:04:39PM -0800, Andrew Morton wrote: > > On Tue, 26 Feb 2008 21:52:40 +0300 Evgeniy Polyakov <johnpol@xxxxxxxxxxx> wrote: > > > > > Hi Adrian. > > > > > > On Tue, Feb 26, 2008 at 05:34:21PM +0200, Adrian Bunk (bunk@xxxxxxxxxx) wrote: > > > > Using ndelay() with a 64bit variable as parameter can result in build > > > > errors like the following on some 32bit systems when it results in a > > > > 64bit division: > > > > > > > > <-- snip --> > > > > > > > > ... > > > > MODPOST 759 modules > > > > ERROR: "__divdi3" [drivers/crypto/hifn_795x.ko] undefined! > > > > > > > > <-- snip --> > > > > > > > > Reported by Martin Michlmayr. > > > > > > > > Signed-off-by: Adrian Bunk <bunk@xxxxxxxxxx> > > > > > > Yep, ndelay() uses division, thanks a lot Adrian for spotting this. > > > > hm. Where? > >... > > include/linux/delay.h:35 > well found. Something like this: --- a/include/linux/delay.h~a +++ a/include/linux/delay.h @@ -7,10 +7,12 @@ * Delay routines, using a pre-computed "loops_per_jiffy" value. */ -extern unsigned long loops_per_jiffy; +#include <linux/kernel.h> #include <asm/delay.h> +extern unsigned long loops_per_jiffy; + /* * Using udelay() for intervals greater than a few milliseconds can * risk overflow for high loops_per_jiffy (high bogomips) machines. The @@ -32,7 +34,11 @@ extern unsigned long loops_per_jiffy; #endif #ifndef ndelay -#define ndelay(x) udelay(((x)+999)/1000) +static inline void ndelay(unsigned long x) +{ + udelay(DIV_ROUND_UP(x, 1000)); +} +#define ndelay(x) ndelay(x) #endif void calibrate_delay(void); _ - To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html