A memory controller provides page copy logic that assures data coherency
when a DMA operation to a page occurs during the copying of the page by
the memory controller. The page copy logic compares the page index of the
DMA operation to a copy address pointer that indicates the location
currently being copied. If the page index of the DMA operation is less
than the copy address pointer, the portion of the page that would be
written to by the DMA operation has already been copied, so the DMA
operation is performed to the physical address of the new page. If the
page index of the DMA operation is greater than the copy address pointer,
the portion of the page that would be written to by the DMA operation has
not yet been copied, so the DMA operation is performed to the physical
address of the old page.