Revision ed396e2b

b/hw/openrisc/pic_cpu.c
26 26
{
27 27
    OpenRISCCPU *cpu = (OpenRISCCPU *)opaque;
28 28
    CPUState *cs = CPU(cpu);
29
    int i;
30 29
    uint32_t irq_bit = 1 << irq;
31 30

  
32 31
    if (irq > 31 || irq < 0) {
......
39 38
        cpu->env.picsr &= ~irq_bit;
40 39
    }
41 40

  
42
    for (i = 0; i < 32; i++) {
43
        if ((cpu->env.picsr && (1 << i)) && (cpu->env.picmr && (1 << i))) {
44
            cpu_interrupt(cs, CPU_INTERRUPT_HARD);
45
        } else {
46
            cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD);
47
            cpu->env.picsr &= ~(1 << i);
48
        }
41
    if (cpu->env.picsr & cpu->env.picmr) {
42
        cpu_interrupt(cs, CPU_INTERRUPT_HARD);
43
    } else {
44
        cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD);
45
        cpu->env.picsr = 0;
49 46
    }
50 47
}
51 48

  

Also available in: Unified diff