xics: add cpu_setup callback
authorAlexey Kardashevskiy <aik@ozlabs.ru>
Thu, 26 Sep 2013 06:18:43 +0000 (16:18 +1000)
committerAlexander Graf <agraf@suse.de>
Fri, 25 Oct 2013 21:25:47 +0000 (23:25 +0200)
This adds a cpu_setup callback to the XICS device class (as XICS-KVM
will do it different), xics_cpu_setup() will call it if it is set.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Alexander Graf <agraf@suse.de>
hw/intc/xics.c
include/hw/ppc/xics.h

index 5ed2618769f768d98981722031d939a45200ea69..1c6e6f5454fc652b3ef3e9a33722d90a09fe52de 100644 (file)
@@ -37,9 +37,14 @@ void xics_cpu_setup(XICSState *icp, PowerPCCPU *cpu)
     CPUState *cs = CPU(cpu);
     CPUPPCState *env = &cpu->env;
     ICPState *ss = &icp->ss[cs->cpu_index];
+    XICSStateClass *info = XICS_COMMON_GET_CLASS(icp);
 
     assert(cs->cpu_index < icp->nr_servers);
 
+    if (info->cpu_setup) {
+        info->cpu_setup(icp, cpu);
+    }
+
     switch (PPC_INPUT(env)) {
     case PPC_FLAGS_INPUT_POWER7:
         ss->output = env->irq_inputs[POWER7_INPUT_INT];
index 7e702a0068ad793b3629d2d1539da8103dfb53bf..343bba80f8630ad33092a8033090497b6122864b 100644 (file)
@@ -64,6 +64,7 @@ typedef struct ICSIRQState ICSIRQState;
 struct XICSStateClass {
     DeviceClass parent_class;
 
+    void (*cpu_setup)(XICSState *icp, PowerPCCPU *cpu);
     void (*set_nr_irqs)(XICSState *icp, uint32_t nr_irqs, Error **errp);
     void (*set_nr_servers)(XICSState *icp, uint32_t nr_servers, Error **errp);
 };