]> www.infradead.org Git - users/dwmw2/qemu.git/commitdiff
target-microblaze: Set the PC in reset instead of realize
authorAlistair Francis <alistair.francis@xilinx.com>
Thu, 23 Jul 2015 15:13:56 +0000 (08:13 -0700)
committerEdgar E. Iglesias <edgar.iglesias@xilinx.com>
Fri, 2 Oct 2015 00:55:36 +0000 (17:55 -0700)
Set the Microblaze CPU PC in the reset instead of setting it
in the realize. This is required as the PC is zeroed in the
reset function and causes problems in some situations.

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
target-microblaze/cpu.c

index 9ac509af3e6e441fa0d3e47b59959a1f9666477f..cbd84a22f7f7fd8e475c59f22e72f91cb8fec8a4 100644 (file)
@@ -107,6 +107,8 @@ static void mb_cpu_reset(CPUState *s)
     /* Disable stack protector.  */
     env->shr = ~0;
 
+    env->sregs[SR_PC] = cpu->cfg.base_vectors;
+
 #if defined(CONFIG_USER_ONLY)
     /* start in user mode with interrupts enabled.  */
     env->sregs[SR_MSR] = MSR_EE | MSR_IE | MSR_VM | MSR_UM;
@@ -183,8 +185,6 @@ static void mb_cpu_realizefn(DeviceState *dev, Error **errp)
     env->pvr.regs[10] = 0x0c000000; /* Default to spartan 3a dsp family.  */
     env->pvr.regs[11] = PVR11_USE_MMU | (16 << 17);
 
-    env->sregs[SR_PC] = cpu->cfg.base_vectors;
-
     mcc->parent_realize(dev, errp);
 }