]> Git Repo - qemu.git/blobdiff - hw/slavio_intctl.c
cpu_single_env usage fix
[qemu.git] / hw / slavio_intctl.c
index 9c8ddd0d0c29225175ea9df21a0ac84935b0393a..9780785a47d6d2077b00eb79dd9da3bbda962af2 100644 (file)
@@ -144,14 +144,14 @@ static void slavio_intctlm_mem_writel(void *opaque, target_phys_addr_t addr, uin
     switch (saddr) {
     case 2: // clear (enable)
        // Force clear unused bits
-       val &= ~0x7fb2007f;
+       val &= ~0x4fb2007f;
        s->intregm_disabled &= ~val;
        DPRINTF("Enabled master irq mask %x, curmask %x\n", val, s->intregm_disabled);
        slavio_check_interrupts(s);
        break;
     case 3: // set (disable, clear pending)
        // Force clear unused bits
-       val &= ~0x7fb2007f;
+       val &= ~0x4fb2007f;
        s->intregm_disabled |= val;
        s->intregm_pending &= ~val;
        DPRINTF("Disabled master irq mask %x, curmask %x\n", val, s->intregm_disabled);
@@ -208,11 +208,12 @@ void slavio_irq_info(void *opaque)
 
 static const uint32_t intbit_to_level[32] = {
     2, 3, 5, 7, 9, 11, 0, 14,  3, 5, 7, 9, 11, 13, 12, 12,
-    6, 0, 4, 10, 8, 0, 11, 0,  0, 0, 0, 0, 15, 0, 0, 0,
+    6, 0, 4, 10, 8, 0, 11, 0,  0, 0, 0, 0, 15, 0, 15, 0,
 };
 
 static void slavio_check_interrupts(void *opaque)
 {
+    CPUState *env;
     SLAVIO_INTCTLState *s = opaque;
     uint32_t pending = s->intregm_pending;
     unsigned int i, max = 0;
@@ -226,16 +227,17 @@ static void slavio_check_interrupts(void *opaque)
                    max = intbit_to_level[i];
            }
        }
-       if (cpu_single_env->interrupt_index == 0) {
+        env = first_cpu;
+       if (env->interrupt_index == 0) {
            DPRINTF("Triggered pil %d\n", max);
 #ifdef DEBUG_IRQ_COUNT
            s->irq_count[max]++;
 #endif
-           cpu_single_env->interrupt_index = TT_EXTINT | max;
-           cpu_interrupt(cpu_single_env, CPU_INTERRUPT_HARD);
+           env->interrupt_index = TT_EXTINT | max;
+           cpu_interrupt(env, CPU_INTERRUPT_HARD);
        }
        else
-           DPRINTF("Not triggered (pending %x), pending exception %x\n", pending, cpu_single_env->interrupt_index);
+           DPRINTF("Not triggered (pending %x), pending exception %x\n", pending, env->interrupt_index);
     }
     else
        DPRINTF("Not triggered (pending %x), disabled %x\n", pending, s->intregm_disabled);
This page took 0.022251 seconds and 4 git commands to generate.