summaryrefslogtreecommitdiff
path: root/hw/ide.c
diff options
context:
space:
mode:
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-08-19 21:46:53 +0000
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-08-19 21:46:53 +0000
commit7603d1568e121f74b03dabc8f86c7c9b88723075 (patch)
tree43dd730b3750ede055a06ef90f07cdc4397511b1 /hw/ide.c
parentc0009975ca00b279071973ab22ff9798fee650ab (diff)
downloadqemu-7603d1568e121f74b03dabc8f86c7c9b88723075.tar.gz
qemu-7603d1568e121f74b03dabc8f86c7c9b88723075.tar.bz2
qemu-7603d1568e121f74b03dabc8f86c7c9b88723075.zip
Fix bugs in the ATAPI cdrom driver, by Brandon Philips.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3124 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'hw/ide.c')
-rw-r--r--hw/ide.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/hw/ide.c b/hw/ide.c
index 9acb02a85e..e84c4d67f9 100644
--- a/hw/ide.c
+++ b/hw/ide.c
@@ -671,7 +671,8 @@ static void ide_transfer_start(IDEState *s, uint8_t *buf, int size,
s->end_transfer_func = end_transfer_func;
s->data_ptr = buf;
s->data_end = buf + size;
- s->status |= DRQ_STAT;
+ if (!(s->status & ERR_STAT))
+ s->status |= DRQ_STAT;
}
static void ide_transfer_stop(IDEState *s)
@@ -1969,6 +1970,7 @@ static void ide_ioport_write(void *opaque, uint32_t addr, uint32_t val)
/* overlapping commands not supported */
if (s->feature & 0x02)
goto abort_cmd;
+ s->status = READY_STAT;
s->atapi_dma = s->feature & 1;
s->nsector = 1;
ide_transfer_start(s, s->io_buffer, ATAPI_PACKET_SIZE,