riscv: Implement non-coherent DMA support via SiFive cache flushing