From 322f82cc38870e7f3274bb0b5767e3778a300a30 Mon Sep 17 00:00:00 2001 From: reinelt Date: Thu, 27 Feb 2003 07:43:11 +0000 Subject: [lcd4linux @ 2003-02-27 07:43:10 by reinelt] asm/msr.h: included hard-coded definition of rdtscl() if msr.h cannot be found. autoconf/automake/autoanything: switched back to 1.4. Hope it works again. git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@185 3ae390bd-cb1e-0410-b409-cd5a39f66f1f --- udelay.c | 59 ++++++++++++++++++++++++++--------------------------------- 1 file changed, 26 insertions(+), 33 deletions(-) (limited to 'udelay.c') diff --git a/udelay.c b/udelay.c index 6077dd0..2ba21f3 100644 --- a/udelay.c +++ b/udelay.c @@ -1,4 +1,4 @@ -/* $Id: udelay.c,v 1.9 2002/08/21 06:09:53 reinelt Exp $ +/* $Id: udelay.c,v 1.10 2003/02/27 07:43:11 reinelt Exp $ * * short delays * @@ -20,6 +20,12 @@ * * * $Log: udelay.c,v $ + * Revision 1.10 2003/02/27 07:43:11 reinelt + * + * asm/msr.h: included hard-coded definition of rdtscl() if msr.h cannot be found. + * + * autoconf/automake/autoanything: switched back to 1.4. Hope it works again. + * * Revision 1.9 2002/08/21 06:09:53 reinelt * some T6963 fixes, ndelay wrap * @@ -100,10 +106,15 @@ #include #include #include + #ifdef HAVE_ASM_MSR_H #include +#else +#warning asm/msr.h not found. +#warning using hard-coded definition. +#define rdtscl(low) \ + __asm__ __volatile__("rdtsc" : "=a" (low) : : "edx") #endif - #endif @@ -206,12 +217,8 @@ static void getCPUinfo (int *hasTSC, double *MHz) } - void udelay_init (void) { - -#ifdef HAVE_ASM_MSR_H - int tsc; double mhz; @@ -224,21 +231,11 @@ void udelay_init (void) ticks_per_usec=0; debug ("using gettimeofday() delay loop"); } - -#else - - debug ("lcd4linux has been compiled without asm/msr.h"); - debug ("using gettimeofday() delay loop"); - -#endif - } void ndelay (unsigned long nsec) { -#ifdef HAVE_ASM_MSR_H - if (ticks_per_usec) { unsigned int t1, t2; @@ -255,26 +252,22 @@ void ndelay (unsigned long nsec) } } while ((t2-t1)1000000) { - end.tv_usec-=1000000; - end.tv_sec++; - } + struct timeval now, end; - do { - rep_nop(); - gettimeofday(&now, NULL); - } while (now.tv_sec==end.tv_sec?now.tv_usec1000000) { + end.tv_usec-=1000000; + end.tv_sec++; } + + do { + rep_nop(); + gettimeofday(&now, NULL); + } while (now.tv_sec==end.tv_sec?now.tv_usec