Christian Helmuth christian.helmuth@genode-labs.com writes:
I'm not an U-Boot expert but as I understand it the loader sensibly handles the boot-image format [1] [2] by switching to AArch32 or AArch64 depending on the image-header information. So, it should be a matter of
mkimage -A arm vs. mkimage -A arm64
Or Am I wrong?
That's what I was suggesting when writing about patches but it seems I did not write that clearly enough. I've seen informations about those patches in mailing lists from 2016 and assumed that u-boot does the switch to Aarch32.
I'll try to make some tests during the weekend that will somehow clarify what is happening.
u-boot switches to Aarch32 in my current configuration.
Using suggested by Bob method (writing to memory and checking it after reset) I confirmed that code crt0.s from bootstrap is started in HYP mode and using code:
mrs r0,cpsr bic r0,r0,#0x1F orr r0,r0,#0x13 msr spsr_cxsf,r0 add r0,pc,#4 msr ELR_hyp,r0 eret
taken from [1] I could switch to SVC mode what allowed to continue boot.
Currently I don't know how far it goes (but further than in my earlier attempts) because write after enabling address translation in repos/base-hw/src/bootstrap/spec/rpi/platform.cc with:
sctlr = Cpu::Sctlr::read(); Cpu::Sctlr::C::set(sctlr, 1); Cpu::Sctlr::I::set(sctlr, 1); Cpu::Sctlr::M::set(sctlr, 1); Cpu::Sctlr::write(sctlr);
I loose ability to write debug to memory.
At least I'm now in a state that I think I understand what is going on and I'll continue research when time permits.
Thanks for help.
[1] https://github.com/dwelch67/raspberrypi/tree/master/boards/pi3/aarch32/SVC
Tomasz Gajewski