From 6b136f9e8f3934f50e07a01b537ade3b57f6b2ce Mon Sep 17 00:00:00 2001 From: bellard Date: Sun, 4 Jan 2004 18:08:12 +0000 Subject: [PATCH] CD-ROM detection fix git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@520 c046a42c-6fe2-441c-8c8c-71466251a162 --- hw/ide.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/hw/ide.c b/hw/ide.c index a0bf8aba8a..3771bb0a58 100644 --- a/hw/ide.c +++ b/hw/ide.c @@ -40,14 +40,14 @@ #include #include +#define NO_THUNK_TYPE_SIZE +#include "thunk.h" + #include "cpu.h" #include "exec-all.h" #include "vl.h" -#define NO_THUNK_TYPE_SIZE -#include "thunk.h" - /* debug IDE devices */ //#define DEBUG_IDE //#define DEBUG_IDE_ATAPI @@ -1128,6 +1128,8 @@ static void ide_ioport_write(CPUX86State *env, uint32_t addr, uint32_t val) break; case WIN_READ: case WIN_READ_ONCE: + if (!s->bs) + goto abort_cmd; s->req_nb_sectors = 1; ide_sector_read(s); break; @@ -1174,7 +1176,7 @@ static void ide_ioport_write(CPUX86State *env, uint32_t addr, uint32_t val) if (!s->is_cdrom) goto abort_cmd; ide_set_signature(s); - s->status = READY_STAT; + s->status = 0x00; /* NOTE: READY is _not_ set */ s->error = 0x01; break; case WIN_PACKETCMD: @@ -1271,7 +1273,10 @@ static void ide_cmd_write(CPUX86State *env, uint32_t addr, uint32_t val) /* high to low */ for(i = 0;i < 2; i++) { s = &ide_if[i]; - s->status = READY_STAT; + if (s->is_cdrom) + s->status = 0x00; /* NOTE: READY is _not_ set */ + else + s->status = READY_STAT; ide_set_signature(s); } }