I'm assuming you are trying to do something like this:
1) Using Nios II to populate some buffer in memory (lets call this buffer A)
2) DMA data from buffer A to another buffer (lets call this buffer B )
3) Using Nios II to read back buffer B
Doing this the data written in# 1 should be the same as the data read back in# 3 but due to the cache this isn't happen.
So for# 1 to be safe you need to ensure the data is not cached and reaches the memory. There are two ways you can do this, A) if you are using pointers remap the pointer to be a cache bypassing pointer, or B ) after you write to the buffer perform a cache flush (just flush the range of address where your buffer resides in memory). When this is done then you can start the DMA.
For# 3 to be safe (just in case you have previously read from the buffer B locations previously) you can do something similar. Either flush those locations before the DMA transfer, or use a cache bypassing pointer to access the data after the DMA transfer.
Depending on your memory latencies and buffer sizes one method will be better than the other. For example if the buffers were on-chip memory using cache bypassing pointers is probably the way to go. If it was SDRAM then flushing ranges of the data cache would probably be better due to the high latency.