Here is the docment about arm64 kernel booting process, which is helpful for us to port kernel. It include the bootloader protocol, virtual memory layout, dtb, memory init, irq init, timer init and so on, please take the attachment for details.
- vmlinux ELF
- vmlinux.lds.S
- head.S
- __create_page_tables
- __cpu_setup
- __primary_switch
- init_task
- IRQ Vectors
- Start_kernel
- setup_arch
- paging_init
- bootmem_init
- psci_dt_init
- mm_init
- sched_init
- init_IRQ
- time_init
- rest_init
You can refer the diagram show as below: