[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 1/6] Move function definitions out of xilinx.h
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH 1/6] Move function definitions out of xilinx.h |
Date: |
Fri, 11 Sep 2009 22:19:16 +0200 |
xilinx.h defines a couple of static inline functions for creating
devices. While that's a fair technique for hot functions, device
initialization is about as cold as it gets. Define them in the device
source files instead, and keep only declarations in the header.
Signed-off-by: Markus Armbruster <address@hidden>
---
hw/xilinx.h | 58 ++++++++------------------------------------------
hw/xilinx_ethlite.c | 19 ++++++++++++++++
hw/xilinx_intc.c | 14 ++++++++++++
hw/xilinx_timer.c | 15 +++++++++++++
4 files changed, 58 insertions(+), 48 deletions(-)
diff --git a/hw/xilinx.h b/hw/xilinx.h
index 070679c..ea91be1 100644
--- a/hw/xilinx.h
+++ b/hw/xilinx.h
@@ -1,50 +1,12 @@
+#ifndef XILINX_H
+#define XILINX_H
-/* OPB Interrupt Controller. */
qemu_irq *microblaze_pic_init_cpu(CPUState *env);
-
-static inline DeviceState *
-xilinx_intc_create(target_phys_addr_t base, qemu_irq irq, int kind_of_intr)
-{
- DeviceState *dev;
-
- dev = qdev_create(NULL, "xilinx,intc");
- qdev_prop_set_uint32(dev, "kind-of-intr", kind_of_intr);
- qdev_init(dev);
- sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
- sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
- return dev;
-}
-
-/* OPB Timer/Counter. */
-static inline DeviceState *
-xilinx_timer_create(target_phys_addr_t base, qemu_irq irq, int nr, int freq)
-{
- DeviceState *dev;
-
- dev = qdev_create(NULL, "xilinx,timer");
- qdev_prop_set_uint32(dev, "nr-timers", nr);
- qdev_prop_set_uint32(dev, "frequency", freq);
- qdev_init(dev);
- sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
- sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
- return dev;
-}
-
-/* XPS Ethernet Lite MAC. */
-static inline DeviceState *
-xilinx_ethlite_create(NICInfo *nd, target_phys_addr_t base, qemu_irq irq,
- int txpingpong, int rxpingpong)
-{
- DeviceState *dev;
-
- qemu_check_nic_model(nd, "xilinx-ethlite");
-
- dev = qdev_create(NULL, "xilinx,ethlite");
- dev->nd = nd;
- qdev_prop_set_uint32(dev, "txpingpong", txpingpong);
- qdev_prop_set_uint32(dev, "rxpingpong", rxpingpong);
- qdev_init(dev);
- sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
- sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
- return dev;
-}
+DeviceState *xilinx_intc_create(target_phys_addr_t base, qemu_irq irq,
+ int kind_of_intr);
+DeviceState *xilinx_timer_create(target_phys_addr_t base, qemu_irq irq,
+ int nr, int freq);
+DeviceState *xilinx_ethlite_create(NICInfo *nd, target_phys_addr_t base,
+ qemu_irq irq, int txpingpong, int rxpingpong);
+
+#endif
diff --git a/hw/xilinx_ethlite.c b/hw/xilinx_ethlite.c
index 9b0074c..1710149 100644
--- a/hw/xilinx_ethlite.c
+++ b/hw/xilinx_ethlite.c
@@ -25,6 +25,7 @@
#include "sysbus.h"
#include "hw.h"
#include "net.h"
+#include "xilinx.h"
#define D(x)
#define R_TX_BUF0 0
@@ -201,6 +202,24 @@ static ssize_t eth_rx(VLANClientState *vc, const uint8_t
*buf, size_t size)
return size;
}
+DeviceState *
+xilinx_ethlite_create(NICInfo *nd, target_phys_addr_t base, qemu_irq irq,
+ int txpingpong, int rxpingpong)
+{
+ DeviceState *dev;
+
+ qemu_check_nic_model(nd, "xilinx-ethlite");
+
+ dev = qdev_create(NULL, "xilinx,ethlite");
+ dev->nd = nd;
+ qdev_prop_set_uint32(dev, "txpingpong", txpingpong);
+ qdev_prop_set_uint32(dev, "rxpingpong", rxpingpong);
+ qdev_init(dev);
+ sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
+ sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
+ return dev;
+}
+
static void eth_cleanup(VLANClientState *vc)
{
struct xlx_ethlite *s = vc->opaque;
diff --git a/hw/xilinx_intc.c b/hw/xilinx_intc.c
index 8ef6474..dfb8442 100644
--- a/hw/xilinx_intc.c
+++ b/hw/xilinx_intc.c
@@ -24,6 +24,7 @@
#include "sysbus.h"
#include "hw.h"
+#include "xilinx.h"
#define D(x)
@@ -145,6 +146,19 @@ static void irq_handler(void *opaque, int irq, int level)
update_irq(p);
}
+DeviceState *
+xilinx_intc_create(target_phys_addr_t base, qemu_irq irq, int kind_of_intr)
+{
+ DeviceState *dev;
+
+ dev = qdev_create(NULL, "xilinx,intc");
+ qdev_prop_set_uint32(dev, "kind-of-intr", kind_of_intr);
+ qdev_init(dev);
+ sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
+ sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
+ return dev;
+}
+
static int xilinx_intc_init(SysBusDevice *dev)
{
struct xlx_pic *p = FROM_SYSBUS(typeof (*p), dev);
diff --git a/hw/xilinx_timer.c b/hw/xilinx_timer.c
index e2d9541..26df4b0 100644
--- a/hw/xilinx_timer.c
+++ b/hw/xilinx_timer.c
@@ -25,6 +25,7 @@
#include "sysbus.h"
#include "sysemu.h"
#include "qemu-timer.h"
+#include "xilinx.h"
#define D(x)
@@ -189,6 +190,20 @@ static void timer_hit(void *opaque)
timer_update_irq(t);
}
+DeviceState *
+xilinx_timer_create(target_phys_addr_t base, qemu_irq irq, int nr, int freq)
+{
+ DeviceState *dev;
+
+ dev = qdev_create(NULL, "xilinx,timer");
+ qdev_prop_set_uint32(dev, "nr-timers", nr);
+ qdev_prop_set_uint32(dev, "frequency", freq);
+ qdev_init(dev);
+ sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
+ sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
+ return dev;
+}
+
static int xilinx_timer_init(SysBusDevice *dev)
{
struct timerblock *t = FROM_SYSBUS(typeof (*t), dev);
--
1.6.2.5
- [Qemu-devel] [PATCH 0/6] Clean up use of qdev_init(), Markus Armbruster, 2009/09/11
- [Qemu-devel] [PATCH 4/6] New qdev_init_nofail(), Markus Armbruster, 2009/09/11
- [Qemu-devel] [PATCH 6/6] Warn if value of qdev_init() isn't checked, Markus Armbruster, 2009/09/11
- [Qemu-devel] [PATCH 3/6] Check return value of qdev_init(), Markus Armbruster, 2009/09/11
- [Qemu-devel] [PATCH 2/6] Make qdev_init() destroy the device on failure, Markus Armbruster, 2009/09/11
- [Qemu-devel] [PATCH 5/6] Make isa_create() terminate program on failure, Markus Armbruster, 2009/09/11
- [Qemu-devel] [PATCH 1/6] Move function definitions out of xilinx.h,
Markus Armbruster <=
- Re: [Qemu-devel] [PATCH 1/6] Move function definitions out of xilinx.h, Blue Swirl, 2009/09/12
- Re: [Qemu-devel] [PATCH 1/6] Move function definitions out of xilinx.h, Edgar E. Iglesias, 2009/09/12
- Re: [Qemu-devel] [PATCH 1/6] Move function definitions out of xilinx.h, Gerd Hoffmann, 2009/09/14
- Re: [Qemu-devel] [PATCH 1/6] Move function definitions out of xilinx.h, Edgar E. Iglesias, 2009/09/14
- Re: [Qemu-devel] [PATCH 1/6] Move function definitions out of xilinx.h, Blue Swirl, 2009/09/14
- Re: [Qemu-devel] [PATCH 1/6] Move function definitions out of xilinx.h, Markus Armbruster, 2009/09/14
- Re: [Qemu-devel] [PATCH 1/6] Move function definitions out of xilinx.h, Blue Swirl, 2009/09/14
Re: [Qemu-devel] [PATCH 0/6] Clean up use of qdev_init(), Gerd Hoffmann, 2009/09/14