X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Flinux%2Fdelay.h;h=acb74865b9732faef3e0b23d6933b09fe97be6bd;hb=987b0145d94eecf292d8b301228356f44611ab7c;hp=868456a624d8bce039e573353ae21550bbbf2b46;hpb=f7ed79d23a47594e7834d66a8f14449796d4f3e6;p=linux-2.6.git diff --git a/include/linux/delay.h b/include/linux/delay.h index 868456a62..acb74865b 100644 --- a/include/linux/delay.h +++ b/include/linux/delay.h @@ -10,7 +10,7 @@ extern unsigned long loops_per_jiffy; #include -#include + /* * Using udelay() for intervals greater than a few milliseconds can * risk overflow for high loops_per_jiffy (high bogomips) machines. The @@ -25,13 +25,14 @@ extern unsigned long loops_per_jiffy; #define MAX_UDELAY_MS 5 #endif -#define mdelay(n) ( \ - { \ - static int warned=0; \ - unsigned long __ms=(n); \ - WARN_ON(in_irq() && !(warned++)); \ - while (__ms--) udelay(1000); \ - }) +#ifdef notdef +#define mdelay(n) (\ + {unsigned long __ms=(n); while (__ms--) udelay(1000);}) +#else +#define mdelay(n) (\ + (__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \ + ({unsigned long __ms=(n); while (__ms--) udelay(1000);})) +#endif #ifndef ndelay #define ndelay(x) udelay(((x)+999)/1000)