We have discussed many Arm architecture-specific aspects in the boot and initialization part, some of them are explained, and some are skipped. If you want to learn the architecture in a more detailed and systematic way, you may refer to the Arm Architecture Reference Manual.

It is a bad idea to read the manual from the very beginning but you should cherry-pick what might be useful for understanding the code you read. The manual uses some terminology that is different from what you might have learned in a previous OS class. So it is better to start reading from sections A1.1 to A1.3 to understand the jargon used in the manual.

Then you can go through sections related to the system-level architecture, such as D1, D4, and D5. You can focus on the part related to memory architecture and virtualization.

After you have an overall idea of how the architecture works, you can just search through the manual for some specific terms, such as the name of a register. The nice thing about the manual is that in most places where a register appears, there is a link to the detailed description of the register so you can find the register definition simply by clicking the link.

The description of the register describes the purpose of the register and explains in detail how each bit in the register is used. For example, if you go to the description of esr_el2, it tells you the name of the register means “Exception Syndrome Register” and the register holds the information for an exception taken to EL2 (you will know what "an exception taken to EL2" means if you go through section D1, but you can understand it as a trap for now). Then it tells you the register is a 64-bit register and bits [31:26], EC, contains the reason for the exception. Therefore, you can imagine the hypervisor can use this register to find the proper handler to handle the trap.

For Arm assembly, this website is useful. You can search for an instruction you are confused about and find a detailed description and usage there. Of course, a more detailed description of the assembly instruction can always be found in the reference manual.