• Robert Sprowson's avatar
    Make PCI_MemoryWrite more useful · d67152f4
    Robert Sprowson authored
    Previously the behaviour was thus
    
    MemoryRead
      for (i = 0; i < wordcount; i++)
        buffer[i] = *pcimem
    MemoryWrite
      for (i = 0; i < wordcount; i++)
        pcimem[i] = *buffer
    
    so in the write case the buffer was largely redundant and the SWI would data abort when copying > 1MB as it fell outside the temporary IO assignment from OS_Memory 14. Now it does
    
    MemoryWrite
      for (i = 0; i < wordcount; i++)
        *pcimem = buffer[i]
    
    the most common case where wordcount = 1 is unchanged, and MemoryRead is unchanged.
    Also
     - sprinkle in some more comments
     - make use of mem_to_phys_offset that the HAL is kind enough to have given us, even if it is 0
     - update the capability id bits from PCI-SIG ECN from April 2010
    
    Tested with a parallel port PCI card, which reported it had vendor specific capabilities (InfCap09).
    
    Version 0.13. Tagged as 'PCI-0_13'
    d67152f4
VersionNum 802 Bytes