[Bug 1853781] Re: Baremetal kernel built from assembly runs multiple times

2019-11-25 Thread Evan Rysdam
Ah, I've been missing out on a whole host of ARM instructions. I haven't tried it yet, but I should be able to get it working from here. Thanks so much for your help! -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launch

[Bug 1853781] Re: Baremetal kernel built from assembly runs multiple times

2019-11-25 Thread Philippe Mathieu-Daudé
You can look at hw/arm/raspi.c::write_smpboot(): While the first core start booting the kernel, the other cores keep spinning until the 1st core configured the mailboxes: static const uint32_t smpboot[] = { 0xe1a0e00f, /*mov lr, pc */ 0xe3a0fe00 + (BOARDSETUP_ADDR >> 4), /* mov pc

[Bug 1853781] Re: Baremetal kernel built from assembly runs multiple times

2019-11-25 Thread Evan Rysdam
Aha! So this is not a bug after all, but an intentional feature. Does "deal with handling all the secondary cores" basically mean "detecting what core I'm currently running on, and continuing only if it's the primary core"? If so, it's not clear to me how I could do this. I tried a few obvious ide

[Bug 1853781] Re: Baremetal kernel built from assembly runs multiple times

2019-11-25 Thread Philippe Mathieu-Daudé
Hi Evan, Your suspicion is correct, the QEMU model starts with the four cores powered on, so your code is likely running on each core in simultaneous. The hardware booting process is described [1]: your code is loaded as the firmware loads kernel.img (the last step). The ARM maintainer suggested

[Bug 1853781] Re: Baremetal kernel built from assembly runs multiple times

2019-11-24 Thread Evan Rysdam
I just noticed that on lines 53 and 55 of the attached file, I forgot to replace the register "r0" with its alias "address". Fixing these lines doesn't change the behavior of the program. -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU