Loading hw/openpic.c +7 −6 Original line number Diff line number Diff line Loading @@ -159,7 +159,7 @@ typedef struct IRQ_dst_t { uint32_t pcsr; /* CPU sensitivity register */ IRQ_queue_t raised; IRQ_queue_t servicing; CPUState *env; /* Needed if we did SMP */ CPUState *env; } IRQ_dst_t; struct openpic_t { Loading Loading @@ -265,8 +265,7 @@ static void IRQ_local_pipe (openpic_t *opp, int n_CPU, int n_IRQ) if (priority > dst->raised.priority) { IRQ_get_next(opp, &dst->raised); DPRINTF("Raise CPU IRQ\n"); /* XXX: choose the correct cpu */ cpu_interrupt(first_cpu, CPU_INTERRUPT_HARD); cpu_interrupt(dst->env, CPU_INTERRUPT_HARD); } } Loading Loading @@ -782,8 +781,7 @@ static void openpic_cpu_write (void *opaque, uint32_t addr, uint32_t val) src = &opp->src[n_IRQ]; if (IPVP_PRIORITY(src->ipvp) > dst->servicing.priority) { DPRINTF("Raise CPU IRQ\n"); /* XXX: choose cpu */ cpu_interrupt(first_cpu, CPU_INTERRUPT_HARD); cpu_interrupt(dst->env, CPU_INTERRUPT_HARD); } } break; Loading Loading @@ -965,7 +963,8 @@ static void openpic_map(PCIDevice *pci_dev, int region_num, #endif } openpic_t *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus) openpic_t *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus, CPUPPCState **envp) { openpic_t *opp; uint8_t *pci_conf; Loading Loading @@ -1019,6 +1018,8 @@ openpic_t *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus) for (; i < MAX_IRQ; i++) { opp->src[i].type = IRQ_INTERNAL; } for (i = 0; i < nb_cpus; i++) opp->dst[i].env = envp[i]; openpic_reset(opp); if (pmem_index) *pmem_index = opp->mem_index; Loading hw/ppc_chrp.c +1 −1 Original line number Diff line number Diff line Loading @@ -474,7 +474,7 @@ static void ppc_chrp_init(int ram_size, int vga_ram_size, int boot_device, vga_initialize(pci_bus, ds, phys_ram_base + ram_size, ram_size, vga_ram_size, vga_bios_offset, vga_bios_size); pic = openpic_init(NULL, &openpic_mem_index, 1); pic = openpic_init(NULL, &openpic_mem_index, 1, &env); set_irq = openpic_set_irq; pci_set_pic(pci_bus, set_irq, pic); Loading vl.h +2 −1 Original line number Diff line number Diff line Loading @@ -613,7 +613,8 @@ PCIBus *pci_apb_init(target_ulong special_base, target_ulong mem_base); /* openpic.c */ typedef struct openpic_t openpic_t; void openpic_set_irq(void *opaque, int n_IRQ, int level); openpic_t *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus); openpic_t *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus, CPUState **envp); /* heathrow_pic.c */ typedef struct HeathrowPICS HeathrowPICS; Loading Loading
hw/openpic.c +7 −6 Original line number Diff line number Diff line Loading @@ -159,7 +159,7 @@ typedef struct IRQ_dst_t { uint32_t pcsr; /* CPU sensitivity register */ IRQ_queue_t raised; IRQ_queue_t servicing; CPUState *env; /* Needed if we did SMP */ CPUState *env; } IRQ_dst_t; struct openpic_t { Loading Loading @@ -265,8 +265,7 @@ static void IRQ_local_pipe (openpic_t *opp, int n_CPU, int n_IRQ) if (priority > dst->raised.priority) { IRQ_get_next(opp, &dst->raised); DPRINTF("Raise CPU IRQ\n"); /* XXX: choose the correct cpu */ cpu_interrupt(first_cpu, CPU_INTERRUPT_HARD); cpu_interrupt(dst->env, CPU_INTERRUPT_HARD); } } Loading Loading @@ -782,8 +781,7 @@ static void openpic_cpu_write (void *opaque, uint32_t addr, uint32_t val) src = &opp->src[n_IRQ]; if (IPVP_PRIORITY(src->ipvp) > dst->servicing.priority) { DPRINTF("Raise CPU IRQ\n"); /* XXX: choose cpu */ cpu_interrupt(first_cpu, CPU_INTERRUPT_HARD); cpu_interrupt(dst->env, CPU_INTERRUPT_HARD); } } break; Loading Loading @@ -965,7 +963,8 @@ static void openpic_map(PCIDevice *pci_dev, int region_num, #endif } openpic_t *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus) openpic_t *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus, CPUPPCState **envp) { openpic_t *opp; uint8_t *pci_conf; Loading Loading @@ -1019,6 +1018,8 @@ openpic_t *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus) for (; i < MAX_IRQ; i++) { opp->src[i].type = IRQ_INTERNAL; } for (i = 0; i < nb_cpus; i++) opp->dst[i].env = envp[i]; openpic_reset(opp); if (pmem_index) *pmem_index = opp->mem_index; Loading
hw/ppc_chrp.c +1 −1 Original line number Diff line number Diff line Loading @@ -474,7 +474,7 @@ static void ppc_chrp_init(int ram_size, int vga_ram_size, int boot_device, vga_initialize(pci_bus, ds, phys_ram_base + ram_size, ram_size, vga_ram_size, vga_bios_offset, vga_bios_size); pic = openpic_init(NULL, &openpic_mem_index, 1); pic = openpic_init(NULL, &openpic_mem_index, 1, &env); set_irq = openpic_set_irq; pci_set_pic(pci_bus, set_irq, pic); Loading
vl.h +2 −1 Original line number Diff line number Diff line Loading @@ -613,7 +613,8 @@ PCIBus *pci_apb_init(target_ulong special_base, target_ulong mem_base); /* openpic.c */ typedef struct openpic_t openpic_t; void openpic_set_irq(void *opaque, int n_IRQ, int level); openpic_t *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus); openpic_t *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus, CPUState **envp); /* heathrow_pic.c */ typedef struct HeathrowPICS HeathrowPICS; Loading