- Instead of jumping directly from EL3 to EL1, try to get to EL2 first and only then switch to EL1.
- One issue that I ran into when working on this lesson was that if FP/SIMD registers are used then everything works well at EL3, but as soon as you get to EL1 print function stops working. This was the reason why I’ve added -mgeneral-regs-only parameter to the compiler options. Now I want you to remove this parameter and reproduce this behavior. Next, you can use
objdump tool to see how exactly gcc make use of FP/SIMD registers in the absence of
-mgeneral-regs-only flag. Finally, I want you to use ‘cpacr_el1’ to allow using FP/SIMD registers.
- Adapt lesson 02 to run on qemu. Check this issue for reference.
2.2 Processor initialization: Linux
3.1 Interrupt handling: RPi OS