Lines Matching +full:cpu +full:- +full:nr
44 if (spapr_ovec_test(spapr->ov5_cas, OV5_XIVE_EXPLOIT) || in check_emulated_xics()
61 static target_ulong h_cppr(PowerPCCPU *cpu, SpaprMachineState *spapr, in h_cppr() argument
68 icp_set_cppr(spapr_cpu_state(cpu)->icp, cppr); in h_cppr()
72 static target_ulong h_ipi(PowerPCCPU *cpu, SpaprMachineState *spapr, in h_ipi() argument
88 static target_ulong h_xirr(PowerPCCPU *cpu, SpaprMachineState *spapr, in h_xirr() argument
91 uint32_t xirr = icp_accept(spapr_cpu_state(cpu)->icp); in h_xirr()
99 static target_ulong h_xirr_x(PowerPCCPU *cpu, SpaprMachineState *spapr, in h_xirr_x() argument
102 uint32_t xirr = icp_accept(spapr_cpu_state(cpu)->icp); in h_xirr_x()
111 static target_ulong h_eoi(PowerPCCPU *cpu, SpaprMachineState *spapr, in h_eoi() argument
118 icp_eoi(spapr_cpu_state(cpu)->icp, xirr); in h_eoi()
122 static target_ulong h_ipoll(PowerPCCPU *cpu, SpaprMachineState *spapr, in h_ipoll() argument
151 static void rtas_set_xive(PowerPCCPU *cpu, SpaprMachineState *spapr, in rtas_set_xive() argument
156 ICSState *ics = spapr->ics; in rtas_set_xive()
157 uint32_t nr, srcno, server, priority; in rtas_set_xive() local
170 nr = rtas_ld(args, 0); in rtas_set_xive()
174 if (!ics_valid_irq(ics, nr) || !xics_icp_get(XICS_FABRIC(spapr), server) in rtas_set_xive()
180 srcno = nr - ics->offset; in rtas_set_xive()
186 static void rtas_get_xive(PowerPCCPU *cpu, SpaprMachineState *spapr, in rtas_get_xive() argument
191 ICSState *ics = spapr->ics; in rtas_get_xive()
192 uint32_t nr, srcno; in rtas_get_xive() local
205 nr = rtas_ld(args, 0); in rtas_get_xive()
207 if (!ics_valid_irq(ics, nr)) { in rtas_get_xive()
213 srcno = nr - ics->offset; in rtas_get_xive()
214 rtas_st(rets, 1, ics->irqs[srcno].server); in rtas_get_xive()
215 rtas_st(rets, 2, ics->irqs[srcno].priority); in rtas_get_xive()
218 static void rtas_int_off(PowerPCCPU *cpu, SpaprMachineState *spapr, in rtas_int_off() argument
223 ICSState *ics = spapr->ics; in rtas_int_off()
224 uint32_t nr, srcno; in rtas_int_off() local
237 nr = rtas_ld(args, 0); in rtas_int_off()
239 if (!ics_valid_irq(ics, nr)) { in rtas_int_off()
244 srcno = nr - ics->offset; in rtas_int_off()
245 ics_write_xive(ics, srcno, ics->irqs[srcno].server, 0xff, in rtas_int_off()
246 ics->irqs[srcno].priority); in rtas_int_off()
251 static void rtas_int_on(PowerPCCPU *cpu, SpaprMachineState *spapr, in rtas_int_on() argument
256 ICSState *ics = spapr->ics; in rtas_int_on()
257 uint32_t nr, srcno; in rtas_int_on() local
270 nr = rtas_ld(args, 0); in rtas_int_on()
272 if (!ics_valid_irq(ics, nr)) { in rtas_int_on()
277 srcno = nr - ics->offset; in rtas_int_on()
278 ics_write_xive(ics, srcno, ics->irqs[srcno].server, in rtas_int_on()
279 ics->irqs[srcno].saved_priority, in rtas_int_on()
280 ics->irqs[srcno].saved_priority); in rtas_int_on()
291 icsc->parent_realize(dev, &local_err); in ics_spapr_realize()
297 spapr_rtas_register(RTAS_IBM_SET_XIVE, "ibm,set-xive", rtas_set_xive); in ics_spapr_realize()
298 spapr_rtas_register(RTAS_IBM_GET_XIVE, "ibm,get-xive", rtas_get_xive); in ics_spapr_realize()
299 spapr_rtas_register(RTAS_IBM_INT_OFF, "ibm,int-off", rtas_int_off); in ics_spapr_realize()
300 spapr_rtas_register(RTAS_IBM_INT_ON, "ibm,int-on", rtas_int_on); in ics_spapr_realize()
318 _FDT(node = fdt_add_subnode(fdt, 0, "interrupt-controller")); in xics_spapr_dt()
321 "PowerPC-External-Interrupt-Presentation")); in xics_spapr_dt()
322 _FDT(fdt_setprop_string(fdt, node, "compatible", "IBM,ppc-xicp")); in xics_spapr_dt()
323 _FDT(fdt_setprop(fdt, node, "interrupt-controller", NULL, 0)); in xics_spapr_dt()
324 _FDT(fdt_setprop(fdt, node, "ibm,interrupt-server-ranges", in xics_spapr_dt()
327 _FDT(fdt_setprop_cell(fdt, node, "#interrupt-cells", 2)); in xics_spapr_dt()
333 PowerPCCPU *cpu, Error **errp) in xics_spapr_cpu_intc_create() argument
337 SpaprCpuState *spapr_cpu = spapr_cpu_state(cpu); in xics_spapr_cpu_intc_create()
339 obj = icp_create(OBJECT(cpu), TYPE_ICP, ics->xics, errp); in xics_spapr_cpu_intc_create()
341 return -1; in xics_spapr_cpu_intc_create()
344 spapr_cpu->icp = ICP(obj); in xics_spapr_cpu_intc_create()
349 PowerPCCPU *cpu) in xics_spapr_cpu_intc_reset() argument
351 icp_reset(spapr_cpu_state(cpu)->icp); in xics_spapr_cpu_intc_reset()
355 PowerPCCPU *cpu) in xics_spapr_cpu_intc_destroy() argument
357 SpaprCpuState *spapr_cpu = spapr_cpu_state(cpu); in xics_spapr_cpu_intc_destroy()
359 icp_destroy(spapr_cpu->icp); in xics_spapr_cpu_intc_destroy()
360 spapr_cpu->icp = NULL; in xics_spapr_cpu_intc_destroy()
371 if (!ics_irq_free(ics, irq - ics->offset)) { in xics_spapr_claim_irq()
373 return -EBUSY; in xics_spapr_claim_irq()
376 ics_set_irq_type(ics, irq - ics->offset, lsi); in xics_spapr_claim_irq()
383 uint32_t srcno = irq - ics->offset; in xics_spapr_free_irq()
387 memset(&ics->irqs[srcno], 0, sizeof(ICSIRQState)); in xics_spapr_free_irq()
393 uint32_t srcno = irq - ics->offset; in xics_spapr_set_irq()
404 PowerPCCPU *cpu = POWERPC_CPU(cs); in xics_spapr_print_info() local
406 icp_pic_print_info(spapr_cpu_state(cpu)->icp, buf); in xics_spapr_print_info()
416 PowerPCCPU *cpu = POWERPC_CPU(cs); in xics_spapr_post_load() local
417 icp_resend(spapr_cpu_state(cpu)->icp); in xics_spapr_post_load()
446 &isc->parent_realize); in ics_spapr_class_init()
447 sicc->activate = xics_spapr_activate; in ics_spapr_class_init()
448 sicc->deactivate = xics_spapr_deactivate; in ics_spapr_class_init()
449 sicc->cpu_intc_create = xics_spapr_cpu_intc_create; in ics_spapr_class_init()
450 sicc->cpu_intc_reset = xics_spapr_cpu_intc_reset; in ics_spapr_class_init()
451 sicc->cpu_intc_destroy = xics_spapr_cpu_intc_destroy; in ics_spapr_class_init()
452 sicc->claim_irq = xics_spapr_claim_irq; in ics_spapr_class_init()
453 sicc->free_irq = xics_spapr_free_irq; in ics_spapr_class_init()
454 sicc->set_irq = xics_spapr_set_irq; in ics_spapr_class_init()
455 sicc->print_info = xics_spapr_print_info; in ics_spapr_class_init()
456 sicc->dt = xics_spapr_dt; in ics_spapr_class_init()
457 sicc->post_load = xics_spapr_post_load; in ics_spapr_class_init()