From 288a3f2ed70400bcb6fbabbe30410ee58f8263ba Mon Sep 17 00:00:00 2001 From: Max Filippov Date: Sun, 20 Jan 2019 16:26:07 -0800 Subject: hw/xtensa: xtfpga: fix bootloader placement in SMP Use BSP reset PC as a place for the mini-bootloader because in SMP configurations APs and BSP may have different boot addresses. This fixes SMP linux uImage boot on xtfpga boards. Signed-off-by: Max Filippov --- hw/xtensa/xtfpga.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'hw/xtensa') diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c index 21094319a6..d3afdfc247 100644 --- a/hw/xtensa/xtfpga.c +++ b/hw/xtensa/xtfpga.c @@ -234,10 +234,15 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, MachineState *machine) int n; for (n = 0; n < smp_cpus; n++) { + CPUXtensaState *cenv = NULL; + cpu = XTENSA_CPU(cpu_create(machine->cpu_type)); - env = &cpu->env; + cenv = &cpu->env; + if (!env) { + env = cenv; + } - env->sregs[PRID] = n; + cenv->sregs[PRID] = n; qemu_register_reset(xtfpga_reset, cpu); /* Need MMU initialized prior to ELF loading, * so that ELF gets loaded into virtual addresses -- cgit v1.2.3