diff options
Diffstat (limited to 'hw/dma.c')
-rw-r--r-- | hw/dma.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -345,9 +345,11 @@ static void channel_run (int ncont, int ichan) #endif r = dma_controllers[ncont].regs + ichan; - n = r->transfer_handler (r->opaque, ichan + (ncont << 2), - r->now[COUNT], (r->base[COUNT] + 1) << ncont); - r->now[COUNT] = n; + if (r->transfer_handler) { + n = r->transfer_handler (r->opaque, ichan + (ncont << 2), + r->now[COUNT], (r->base[COUNT] + 1) << ncont); + r->now[COUNT] = n; + } ldebug ("dma_pos %d size %d\n", n, (r->base[COUNT] + 1) << ncont); } |