<div dir="ltr"><div><br clear="all"></div><div>Hi,</div><div><br></div><div>I'm trying to learn about the Linux kernel and the bare metal world on raspberry pi 4.  After writing a simple kernel, which would print Hello World to UART, I tried to write Hello World using two different binaries loaded at two different addresses(and on two different exception levels!(EL2 and EL1). <br></div><div><br></div><div>el2-kernel.img - this just prints Hello to UART.<br></div><div>el1-kernel.img - this just prints World to UART.</div><div><br></div><div>I used the following configuration on rpi4, to load both binaries on rpi4. <br></div><div><br></div><div>kernel=el2-kernel.img<br>initramfs el1-kernel.img 0x400000</div><div><br></div><div>In the el2-kernel.img, I wrote a function which would jump from any exception level to EL1 at 0x400000. <br></div><div><br></div><div>I have successfully done so. I can see the Hello World printed to UART by two different binaries. What I cannot do is to jump from a binary(let's call it a simple hypervisor, which prints Hello World) at EL2 to the standard linux kernel at El1.<br></div><div><br></div><div>How would I be able to do so? I have tried the same with standard linux kernel and "kept" dtb address in x0, so it can used by the linux kernel. <br></div><div><br></div><div>My code for the simple hypervisor: <a href="https://github.com/SikkiLadho/Leo">https://github.com/SikkiLadho/Leo</a></div><div><br></div></div>