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