]> git.proxmox.com Git - qemu.git/commitdiff
Force the primary CPU to run and other CPUs to halt, recalculate timers
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>
Thu, 17 May 2007 19:21:46 +0000 (19:21 +0000)
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>
Thu, 17 May 2007 19:21:46 +0000 (19:21 +0000)
after system_reset.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2822 c046a42c-6fe2-441c-8c8c-71466251a162

hw/slavio_timer.c
hw/sun4m.c

index 8898afc460140b5a0321d41ce7b4c7b19df6541e..acf94f3d53ac97d2c8a06594d59776eece0b1a36 100644 (file)
@@ -263,7 +263,7 @@ static void slavio_timer_reset(void *opaque)
     s->reached = 0;
     s->mode &= 2;
     s->stopped = 1;
-    slavio_timer_get_out(s);
+    slavio_timer_irq(s);
 }
 
 void slavio_timer_init(uint32_t addr, int irq, int mode, unsigned int cpu,
index 89f4b418d24b2366b5f75f9499fd942217ea2b2b..fc410bdd7fe709d8d54475d10e80a1b3905f454f 100644 (file)
@@ -243,7 +243,17 @@ void qemu_system_powerdown(void)
 static void main_cpu_reset(void *opaque)
 {
     CPUState *env = opaque;
+
     cpu_reset(env);
+    env->halted = 0;
+}
+
+static void secondary_cpu_reset(void *opaque)
+{
+    CPUState *env = opaque;
+
+    cpu_reset(env);
+    env->halted = 1;
 }
 
 static void sun4m_hw_init(const struct hwdef *hwdef, int ram_size,
@@ -266,10 +276,13 @@ static void sun4m_hw_init(const struct hwdef *hwdef, int ram_size,
         env = cpu_init();
         cpu_sparc_register(env, def);
         envs[i] = env;
-        if (i != 0)
+        if (i == 0) {
+            qemu_register_reset(main_cpu_reset, env);
+        } else {
+            qemu_register_reset(secondary_cpu_reset, env);
             env->halted = 1;
+        }
         register_savevm("cpu", i, 3, cpu_save, cpu_load, env);
-        qemu_register_reset(main_cpu_reset, env);
     }
     /* allocate RAM */
     cpu_register_physical_memory(0, ram_size, 0);