linux jsm

John Marvin jsm@puffin.external.hp.com
Wed, 11 Oct 2000 02:47:31 -0600


CVSROOT:	/home/cvs/parisc
Module name:	linux
Changes by:	jsm	00/10/11 02:47:31

Modified files:
	include/asm-parisc: delay.h 

Log message:
The current delay loop is highly dependent on the way the processor schedules
instructions. The cache alignment helps, but there are other variables that
can still make it be off by 2x. I added two nops after the loop to prevent
it from being bundled in the same quadword with an instruction like mfctl.

However, this still doesn't fix all cases, and the code that I came up
with that does fix all cases is ugly and highly cpu dependent. So, instead
I've chosen to do what the IA64 port does. __delay() will remain slightly
broken (better than before with the addition of the nops), but it will
only be used for the BogoMIPS calculation, and for some old drivers that
parisc will probably never support.

Instead, I've rewritten udelay() to use cr16, which is much more reliable
and not likely to break on a future processor.

Note that we were not seeing any problems on 32 bit, but this fixes a
problem we were seeing with the scsi driver on the 64 bit port.