aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBlue Swirl <blauwirbel@gmail.com>2009-08-23 12:23:30 +0000
committerBlue Swirl <blauwirbel@gmail.com>2009-08-23 12:23:30 +0000
commitd453c2c32ed2bf6cfccb6c2463416c4a613eb708 (patch)
tree3102ce55f276212e2bd1b47a320537ff66d4d464
parent7432ff5d6b70b58d6d3d9417cf87d2fe9ba2ce6c (diff)
Sparc32: fix monitor commands 'info pic' and 'info irq'
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
-rw-r--r--hw/slavio_intctl.c14
-rw-r--r--hw/sun4m.c15
-rw-r--r--hw/sun4m.h4
3 files changed, 19 insertions, 14 deletions
diff --git a/hw/slavio_intctl.c b/hw/slavio_intctl.c
index dbea1f93a..c9bad2607 100644
--- a/hw/slavio_intctl.c
+++ b/hw/slavio_intctl.c
@@ -220,11 +220,14 @@ static CPUWriteMemoryFunc *slavio_intctlm_mem_write[3] = {
slavio_intctlm_mem_writel,
};
-void slavio_pic_info(Monitor *mon, void *opaque)
+void slavio_pic_info(Monitor *mon, DeviceState *dev)
{
- SLAVIO_INTCTLState *s = opaque;
+ SysBusDevice *sd;
+ SLAVIO_INTCTLState *s;
int i;
+ sd = sysbus_from_qdev(dev);
+ s = FROM_SYSBUS(SLAVIO_INTCTLState, sd);
for (i = 0; i < MAX_CPUS; i++) {
monitor_printf(mon, "per-cpu %d: pending 0x%08x\n", i,
s->slaves[i].intreg_pending);
@@ -233,15 +236,18 @@ void slavio_pic_info(Monitor *mon, void *opaque)
s->intregm_pending, s->intregm_disabled);
}
-void slavio_irq_info(Monitor *mon, void *opaque)
+void slavio_irq_info(Monitor *mon, DeviceState *dev)
{
#ifndef DEBUG_IRQ_COUNT
monitor_printf(mon, "irq statistic code not compiled.\n");
#else
- SLAVIO_INTCTLState *s = opaque;
+ SysBusDevice *sd;
+ SLAVIO_INTCTLState *s;
int i;
int64_t count;
+ sd = sysbus_from_qdev(dev);
+ s = FROM_SYSBUS(SLAVIO_INTCTLState, sd);
monitor_printf(mon, "IRQ statistics:\n");
for (i = 0; i < 32; i++) {
count = s->irq_count[i];
diff --git a/hw/sun4m.c b/hw/sun4m.c
index ddc295a9a..88a0b2511 100644
--- a/hw/sun4m.c
+++ b/hw/sun4m.c
@@ -209,7 +209,7 @@ static void nvram_init(m48t59_t *nvram, uint8_t *macaddr, const char *cmdline,
m48t59_write(nvram, i, image[i]);
}
-static void *slavio_intctl;
+static DeviceState *slavio_intctl;
void pic_info(Monitor *mon)
{
@@ -748,7 +748,6 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size,
unsigned long kernel_size;
BlockDriverState *fd[MAX_FD];
void *fw_cfg;
- DeviceState *dev;
DriveInfo *dinfo;
/* init CPUs */
@@ -768,16 +767,16 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size,
prom_init(hwdef->slavio_base, bios_name);
- dev = slavio_intctl_init(hwdef->intctl_base,
- hwdef->intctl_base + 0x10000ULL,
- cpu_irqs,
- 7);
+ slavio_intctl = slavio_intctl_init(hwdef->intctl_base,
+ hwdef->intctl_base + 0x10000ULL,
+ cpu_irqs,
+ 7);
for (i = 0; i < 32; i++) {
- slavio_irq[i] = qdev_get_gpio_in(dev, i);
+ slavio_irq[i] = qdev_get_gpio_in(slavio_intctl, i);
}
for (i = 0; i < MAX_CPUS; i++) {
- slavio_cpu_irq[i] = qdev_get_gpio_in(dev, 32 + i);
+ slavio_cpu_irq[i] = qdev_get_gpio_in(slavio_intctl, 32 + i);
}
if (hwdef->idreg_base) {
diff --git a/hw/sun4m.h b/hw/sun4m.h
index 9f540920a..ce97ee5a7 100644
--- a/hw/sun4m.h
+++ b/hw/sun4m.h
@@ -23,8 +23,8 @@ static inline void sparc_iommu_memory_write(void *opaque,
}
/* slavio_intctl.c */
-void slavio_pic_info(Monitor *mon, void *opaque);
-void slavio_irq_info(Monitor *mon, void *opaque);
+void slavio_pic_info(Monitor *mon, DeviceState *dev);
+void slavio_irq_info(Monitor *mon, DeviceState *dev);
/* sun4c_intctl.c */
void sun4c_pic_info(Monitor *mon, void *opaque);