X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Flinux%2Fdelay.h;fp=include%2Flinux%2Fdelay.h;h=acb74865b9732faef3e0b23d6933b09fe97be6bd;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=5443e1fbef0fc40b2ae5de5cd6baee24e708c435;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/include/linux/delay.h b/include/linux/delay.h index 5443e1fbe..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,14 +25,13 @@ extern unsigned long loops_per_jiffy; #define MAX_UDELAY_MS 5 #endif -#ifndef mdelay -#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