[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Memory prefetch



We are having problems with a very basic transfer from a FIFO'd PCI
interface to host memory.  We are running the following code under Win95:

  mov esi, <address of source - in this case the FIFO>
  mov edi, <address of destination>
  mov ecx, <number of DWORDS - always even !>
  rep movsd  ; this is the instruction that does the transfer

The results we get are that at a 4K page boundary the first word of the
new page never makes it into host memory.  We see the transfer occur on
the logic analyzer and there is nothing to indicate that there was a
problem with the transfer.  The interesting thing is that the next read
uses the same address as that used for the lost data word and this word is
what shows up in the first word of the page.

The assumption is that the host PCI controller has decided the memory is 
prefetchable.  I have checked this using pciview, cfgtest, and pcidump.
All return bit 3 of base address 0 as 0.

I'm stuck on how to proceed.  Any suggestions or ideas are appreciated.

thanks,
Stuart Milton.
œˆw