Fix DMA timeouts on FreeBSD, by Carlo Marcelo Arenas Belon.
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 24 Jan 2007 01:12:42 +0000 (01:12 +0000)
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 24 Jan 2007 01:12:42 +0000 (01:12 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2349 c046a42c-6fe2-441c-8c8c-71466251a162

hw/ide.c

index afa06f8..8c9b6e6 100644 (file)
--- a/hw/ide.c
+++ b/hw/ide.c
@@ -2230,7 +2230,6 @@ static void ide_dma_start(IDEState *s, BlockDriverCompletionFunc *dma_cb)
         return;
     bm->ide_if = s;
     bm->dma_cb = dma_cb;
-    bm->cur_addr = bm->addr;
     bm->cur_prd_last = 0;
     bm->cur_prd_addr = 0;
     bm->cur_prd_len = 0;
@@ -2363,6 +2362,7 @@ static void bmdma_addr_writel(void *opaque, uint32_t addr, uint32_t val)
     printf("%s: 0x%08x\n", __func__, val);
 #endif
     bm->addr = val & ~3;
+    bm->cur_addr = bm->addr;
 }
 
 static void bmdma_map(PCIDevice *pci_dev, int region_num,