summary refs log tree commit diff stats
path: root/hw/mips_int.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/mips_int.c')
-rw-r--r--hw/mips_int.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/hw/mips_int.c b/hw/mips_int.c
index 93d599fc60..7f9f15305b 100644
--- a/hw/mips_int.c
+++ b/hw/mips_int.c
@@ -20,20 +20,15 @@ void cpu_mips_update_irq(CPUState *env)
 
 void cpu_mips_irq_request(void *opaque, int irq, int level)
 {
-    CPUState *env = first_cpu;
-   
-    uint32_t mask;
+    CPUState *env = (CPUState *)opaque;
 
-    if (irq >= 16)
+    if (irq < 0 || irq > 7)
         return;
 
-    mask = 1 << (irq + CP0Ca_IP);
-
     if (level) {
-        env->CP0_Cause |= mask;
+        env->CP0_Cause |= 1 << (irq + CP0Ca_IP);
     } else {
-        env->CP0_Cause &= ~mask;
+        env->CP0_Cause &= ~(1 << (irq +CP0Ca_IP));
     }
     cpu_mips_update_irq(env);
 }
-