mips: do mips_sync() on sync operations to uncachable memory.

mips24k/mips74k document that we need an explicit SYNC so to order
things correctly, even with access to uncachable memory.
We were doing calls to SYNC in the cache ops (inv, wbinv) but we
weren't doing it for uncachable memory.
This commit is contained in:
Adrian Chadd 2015-10-31 00:29:26 +00:00
parent 941f53b9a9
commit f2c42f690f

View File

@ -1220,11 +1220,12 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
if (STAILQ_FIRST(&map->bpages))
_bus_dmamap_sync_bp(dmat, map, op);
if (dmat->flags & BUS_DMA_COHERENT)
return;
if (map->flags & DMAMAP_UNCACHEABLE)
if ((dmat->flags & BUS_DMA_COHERENT) ||
(map->flags & DMAMAP_UNCACHEABLE)) {
if (op & BUS_DMASYNC_PREWRITE)
mips_sync();
return;
}
aligned = (map->flags & DMAMAP_CACHE_ALIGNED) ? 1 : 0;