qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 17/23] ide: Clean up ide_exec_cmd()


From: Stefan Hajnoczi
Subject: [Qemu-devel] [PATCH 17/23] ide: Clean up ide_exec_cmd()
Date: Mon, 24 Jun 2013 11:10:29 +0200

From: Kevin Wolf <address@hidden>

All commands are now converted to ide_cmd_table handlers, so it can be
unconditional now and the old switch block can go.

Signed-off-by: Kevin Wolf <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
 hw/ide/core.c | 36 ++++++++++++------------------------
 1 file changed, 12 insertions(+), 24 deletions(-)

diff --git a/hw/ide/core.c b/hw/ide/core.c
index 1c8f414..03d1cfa 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -1694,6 +1694,7 @@ static bool ide_cmd_permitted(IDEState *s, uint32_t cmd)
 void ide_exec_cmd(IDEBus *bus, uint32_t val)
 {
     IDEState *s;
+    bool complete;
 
 #if defined(DEBUG_IDE)
     printf("ide: CMD=%02x\n", val);
@@ -1708,37 +1709,24 @@ void ide_exec_cmd(IDEBus *bus, uint32_t val)
         return;
 
     if (!ide_cmd_permitted(s, val)) {
-        goto abort_cmd;
+        ide_abort_command(s);
+        ide_set_irq(s->bus);
+        return;
     }
 
-    if (ide_cmd_table[val].handler != NULL) {
-        bool complete;
-
-        s->status = READY_STAT | BUSY_STAT;
-        s->error = 0;
-
-        complete = ide_cmd_table[val].handler(s, val);
-        if (complete) {
-            s->status &= ~BUSY_STAT;
-            assert(!!s->error == !!(s->status & ERR_STAT));
+    s->status = READY_STAT | BUSY_STAT;
+    s->error = 0;
 
-            if ((ide_cmd_table[val].flags & SET_DSC) && !s->error) {
-                s->status |= SEEK_STAT;
-            }
+    complete = ide_cmd_table[val].handler(s, val);
+    if (complete) {
+        s->status &= ~BUSY_STAT;
+        assert(!!s->error == !!(s->status & ERR_STAT));
 
-            ide_set_irq(s->bus);
+        if ((ide_cmd_table[val].flags & SET_DSC) && !s->error) {
+            s->status |= SEEK_STAT;
         }
 
-        return;
-    }
-
-    switch(val) {
-    default:
-        /* should not be reachable */
-    abort_cmd:
-        ide_abort_command(s);
         ide_set_irq(s->bus);
-        break;
     }
 }
 
-- 
1.8.1.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]