summary refs log tree commit diff stats
path: root/hw/ide
diff options
context:
space:
mode:
authorKevin Wolf <kwolf@redhat.com>2013-06-18 10:25:59 +0200
committerStefan Hajnoczi <stefanha@redhat.com>2013-06-24 10:25:15 +0200
commit413860cfb57d44baf971ae8d4f1cdf45340b3a4d (patch)
treed27fc23db77e7a9eb9d26fd4dd8cadaf581ba5ac /hw/ide
parentb300337e4e939d58ba39843b5e5fef53eb82acec (diff)
downloadfocaccia-qemu-413860cfb57d44baf971ae8d4f1cdf45340b3a4d.tar.gz
focaccia-qemu-413860cfb57d44baf971ae8d4f1cdf45340b3a4d.zip
ide: Convert verify commands to ide_cmd_table handler
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'hw/ide')
-rw-r--r--hw/ide/core.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/hw/ide/core.c b/hw/ide/core.c
index 057662de3e..bf2007a5a4 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -1046,6 +1046,16 @@ static bool cmd_identify(IDEState *s, uint8_t cmd)
     return true;
 }
 
+static bool cmd_verify(IDEState *s, uint8_t cmd)
+{
+    bool lba48 = (cmd == WIN_VERIFY_EXT);
+
+    /* do sector number check ? */
+    ide_cmd_lba48_transform(s, lba48);
+
+    return true;
+}
+
 #define HD_OK (1u << IDE_HD)
 #define CD_OK (1u << IDE_CD)
 #define CFA_OK (1u << IDE_CFATA)
@@ -1079,9 +1089,9 @@ static const struct {
     [CFA_WRITE_SECT_WO_ERASE]     = { NULL, CFA_OK },
     [WIN_MULTWRITE_EXT]           = { NULL, HD_CFA_OK },
     [WIN_WRITE_VERIFY]            = { NULL, HD_CFA_OK },
-    [WIN_VERIFY]                  = { NULL, HD_CFA_OK },
-    [WIN_VERIFY_ONCE]             = { NULL, HD_CFA_OK },
-    [WIN_VERIFY_EXT]              = { NULL, HD_CFA_OK },
+    [WIN_VERIFY]                  = { cmd_verify, HD_CFA_OK | SET_DSC },
+    [WIN_VERIFY_ONCE]             = { cmd_verify, HD_CFA_OK | SET_DSC },
+    [WIN_VERIFY_EXT]              = { cmd_verify, HD_CFA_OK | SET_DSC },
     [WIN_SEEK]                    = { NULL, HD_CFA_OK },
     [CFA_TRANSLATE_SECTOR]        = { NULL, CFA_OK },
     [WIN_DIAGNOSE]                = { NULL, ALL_OK },
@@ -1187,17 +1197,6 @@ void ide_exec_cmd(IDEBus *bus, uint32_t val)
         ide_set_irq(s->bus);
         break;
 
-    case WIN_VERIFY_EXT:
-        lba48 = 1;
-        /* fall through */
-    case WIN_VERIFY:
-    case WIN_VERIFY_ONCE:
-        /* do sector number check ? */
-	ide_cmd_lba48_transform(s, lba48);
-        s->status = READY_STAT | SEEK_STAT;
-        ide_set_irq(s->bus);
-        break;
-
     case WIN_READ_EXT:
         lba48 = 1;
         /* fall through */