Messages in this thread Patch in this message | | | Date | Sat, 3 Oct 1998 21:34:52 -0400 (EDT) | From | "Richard B. Johnson" <> | Subject | Re: BogoMIPS |
| |
On Sat, 3 Oct 1998, Alan Cox wrote:
> > > As a result, 2.0.x just does it as a separate subroutine in > > > > > > arch/i386/lib/delay.S > > > > > > and that pretty much forces it to not jitter at all. If you'd send me that > > > kind of patch I'd accept it. > > It jitters on cyrix unless you force alignments too. I've not figured out > the logic that can cause this just that it happens. > > > I think the right thing is to use the TSC if the machine has one > > (which can be trusted.) That leaves only older, simple machines to > > use timing loops. > > That needs the time.c patches to 2.1.x otherwise you cant use non intel > chips TSC or use the TSC on an APM aware kernel > >
This works and gets rid of the two jmps that everybody complained about.
--- linux-2.1.123/arch/i386/lib/delay.c.orig Sun Dec 21 20:27:18 1997 +++ linux-2.1.123/arch/i386/lib/delay.c Wed Sep 30 20:45:23 1998 @@ -6,6 +6,12 @@ * * The __delay function must _NOT_ be inlined as its execution time * depends wildly on alignment on many x86 processors. + * + * 29-SEP-1998 rjohnson@analogic.com + * Modified __delay() to remove alignment problems for all current + * processors. Code does a long (far) return to the actual delay + * loop after putting the complete address on the stack. This starts + * the loop with a new cache-line in the prefetch queue. */ #include <linux/sched.h> @@ -18,7 +24,11 @@ void __delay(unsigned long loops) { __asm__ __volatile__( - "1:\tdecl %0\n\tjns 1b" + "\tpushl %%cs\n" + "\tpushl $doit\n" + "\tlret\n" + ".align 16\n" + "doit:\tdecl %%eax\n\tjns doit" :/* no outputs */ :"a" (loops) :"ax");
Cheers, Dick Johnson ***** FILE SYSTEM WAS MODIFIED ***** Penguin : Linux version 2.1.123 on an i586 machine (66.15 BogoMips). Warning : It's hard to remain at the trailing edge of technology.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |