@@ -23,6 +23,8 @@
#include "hw.h"
#include "mips_cpudevs.h"
#include "cpu.h"
+#include "sysemu/kvm.h"
+#include "kvm_mips.h"
static void cpu_mips_irq_request(void *opaque, int irq, int level)
{
@@ -33,8 +35,21 @@ static void cpu_mips_irq_request(void *opaque, int irq, int level)
if (level) {
env->CP0_Cause |= 1 << (irq + CP0Ca_IP);
+
+#ifdef CONFIG_KVM
+ if (kvm_enabled() && irq == 2) {
+ kvm_mips_set_interrupt (env, irq, level);
+ }
+#endif
+
} else {
env->CP0_Cause &= ~(1 << (irq + CP0Ca_IP));
+
+#ifdef CONFIG_KVM
+ if (kvm_enabled() && irq == 2) {
+ kvm_mips_set_interrupt (env, irq, level);
+ }
+#endif
}
if (env->CP0_Cause & CP0Ca_IP_mask) {