On Tue, Sep 27, 2016 at 8:39 PM, Hervé Poussineau <hpous...@reactos.org> wrote: > Le 27/09/2016 à 16:53, Artyom Tarasenko a écrit : >> >> Are slavio_pic_info and slavio_irq_info still used after this patch? > > > After this patch, yes. > However, slavio_pic_info/slavio_irq_info (and > sun4m_hmp_info_pic/sun4m_hmp_info_irq) will be removed in patch 5/6. >
Oh. The 5/6 somehow didn't make it to my inbox, so I missed it. Acked-by: Artyom Tarasenko <atar4q...@gmail.com> > > >> >> On Mon, Sep 26, 2016 at 10:23 PM, Hervé Poussineau <hpous...@reactos.org> >> wrote: >>> >>> Signed-off-by: Hervé Poussineau <hpous...@reactos.org> >>> --- >>> hw/intc/slavio_intctl.c | 35 +++++++++++++++++++++++++++++++++++ >>> 1 file changed, 35 insertions(+) >>> >>> diff --git a/hw/intc/slavio_intctl.c b/hw/intc/slavio_intctl.c >>> index e82e893..a9acb64 100644 >>> --- a/hw/intc/slavio_intctl.c >>> +++ b/hw/intc/slavio_intctl.c >>> @@ -26,6 +26,7 @@ >>> #include "hw/sparc/sun4m.h" >>> #include "monitor/monitor.h" >>> #include "hw/sysbus.h" >>> +#include "hw/intc/intc.h" >>> #include "trace.h" >>> >>> //#define DEBUG_IRQ_COUNT >>> @@ -418,6 +419,31 @@ static void slavio_intctl_reset(DeviceState *d) >>> slavio_check_interrupts(s, 0); >>> } >>> >>> +#ifdef DEBUG_IRQ_COUNT >>> +static bool slavio_intctl_get_statistics(InterruptStatsProvider *obj, >>> + uint64_t **irq_counts, >>> + unsigned int *nb_irqs) >>> +{ >>> + SLAVIO_INTCTLState *s = SLAVIO_INTCTL(obj); >>> + *irq_counts = s->irq_count; >>> + *nb_irqs = ARRAY_SIZE(s->irq_count); >>> + return true; >>> +} >>> +#endif >>> + >>> +static void slavio_intctl_print_info(InterruptStatsProvider *obj, >>> Monitor *mon) >>> +{ >>> + SLAVIO_INTCTLState *s = SLAVIO_INTCTL(obj); >>> + int i; >>> + >>> + for (i = 0; i < MAX_CPUS; i++) { >>> + monitor_printf(mon, "per-cpu %d: pending 0x%08x\n", i, >>> + s->slaves[i].intreg_pending); >>> + } >>> + monitor_printf(mon, "master: pending 0x%08x, disabled 0x%08x\n", >>> + s->intregm_pending, s->intregm_disabled); >>> +} >>> + >>> static void slavio_intctl_init(Object *obj) >>> { >>> DeviceState *dev = DEVICE(obj); >>> @@ -449,9 +475,14 @@ static void slavio_intctl_init(Object *obj) >>> static void slavio_intctl_class_init(ObjectClass *klass, void *data) >>> { >>> DeviceClass *dc = DEVICE_CLASS(klass); >>> + InterruptStatsProviderClass *ic = >>> INTERRUPT_STATS_PROVIDER_CLASS(klass); >>> >>> dc->reset = slavio_intctl_reset; >>> dc->vmsd = &vmstate_intctl; >>> +#ifdef DEBUG_IRQ_COUNT >>> + ic->get_statistics = slavio_intctl_get_statistics; >>> +#endif >>> + ic->print_info = slavio_intctl_print_info; >>> } >>> >>> static const TypeInfo slavio_intctl_info = { >>> @@ -460,6 +491,10 @@ static const TypeInfo slavio_intctl_info = { >>> .instance_size = sizeof(SLAVIO_INTCTLState), >>> .instance_init = slavio_intctl_init, >>> .class_init = slavio_intctl_class_init, >>> + .interfaces = (InterfaceInfo[]) { >>> + { TYPE_INTERRUPT_STATS_PROVIDER }, >>> + { } >>> + }, >>> }; >>> >>> static void slavio_intctl_register_types(void) >>> -- >>> 2.1.4 >>> >>> >> >> >> > -- Regards, Artyom Tarasenko SPARC and PPC PReP under qemu blog: http://tyom.blogspot.com/search/label/qemu