Patchwork [20/20] pci: remove goto in pci_bridge_filter().

login
register
mail settings
Submitter Isaku Yamahata
Date Nov. 12, 2009, 5:58 a.m.
Message ID <1258005528-25383-21-git-send-email-yamahata@valinux.co.jp>
Download mbox | patch
Permalink /patch/38219/
State New
Headers show

Comments

Isaku Yamahata - Nov. 12, 2009, 5:58 a.m.
This patch removes ugly goto in pci_bridge_filter() by
introducing subfunction, pci_bridge_filter_nomap().

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
---
 hw/pci.c |   16 +++++++++++-----
 1 files changed, 11 insertions(+), 5 deletions(-)

Patch

diff --git a/hw/pci.c b/hw/pci.c
index add919b..90bdf5e 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -691,6 +691,12 @@  static pcibus_t pci_bridge_get_limit(PCIDevice *bridge, uint8_t type)
     return limit;
 }
 
+static void pci_bridge_filter_nomap(pcibus_t *addr, pcibus_t *size)
+{
+    *addr = PCI_BAR_UNMAPPED;
+    *size = 0;
+}
+
 static void pci_bridge_filter(PCIDevice *d, pcibus_t *addr, pcibus_t *size,
                               uint8_t type)
 {
@@ -703,11 +709,13 @@  static void pci_bridge_filter(PCIDevice *d, pcibus_t *addr, pcibus_t *size,
 
         if (type & PCI_BASE_ADDRESS_SPACE_IO) {
             if (!(cmd & PCI_COMMAND_IO)) {
-                goto no_map;
+                pci_bridge_filter_nomap(addr, size);
+                return;
             }
         } else {
             if (!(cmd & PCI_COMMAND_MEMORY)) {
-                goto no_map;
+                pci_bridge_filter_nomap(addr, size);
+                return;
             }
         }
 
@@ -716,9 +724,7 @@  static void pci_bridge_filter(PCIDevice *d, pcibus_t *addr, pcibus_t *size,
     }
 
     if (base > limit) {
-    no_map:
-        *addr = PCI_BAR_UNMAPPED;
-        *size = 0;
+        pci_bridge_filter_nomap(addr, size);
     } else {
         *addr = base;
         *size = limit - base + 1;