Revision 39d51eb8 hw/mips_int.c

b/hw/mips_int.c
20 20

  
21 21
void cpu_mips_irq_request(void *opaque, int irq, int level)
22 22
{
23
    CPUState *env = first_cpu;
24
   
25
    uint32_t mask;
23
    CPUState *env = (CPUState *)opaque;
26 24

  
27
    if (irq >= 16)
25
    if (irq < 0 || irq > 7)
28 26
        return;
29 27

  
30
    mask = 1 << (irq + CP0Ca_IP);
31

  
32 28
    if (level) {
33
        env->CP0_Cause |= mask;
29
        env->CP0_Cause |= 1 << (irq + CP0Ca_IP);
34 30
    } else {
35
        env->CP0_Cause &= ~mask;
31
        env->CP0_Cause &= ~(1 << (irq +CP0Ca_IP));
36 32
    }
37 33
    cpu_mips_update_irq(env);
38 34
}
39

  

Also available in: Unified diff