[SOLVED] How is x0 register is set in arm64 kernel start when ACPI table is used instead of device tree?
by flyxtop from LinuxQuestions.org on (#5CYDG)
Hello,
I saw the head.S file for arm64 (arch/arm64/kernel/head.S) assumes the x0 register contains the address of the device tree (dtb, or FDT).
But some systems use ACPI table for handing hardware configuration to the kernel(for example, I heard N1 SDP from arm uses ACPI tables).
If the system firmware and bootloader uses UEFI and ACPI, (and bootloader like grub), does the bootloader set x0 with dtb too(by inspecting ACPI table maybe)?
Or in this case, x0 is not set by the bootloader and x0 is unltimately not used in kernel during initialization and instead UEFI system table -> RSDP and ACPI table search and namespace building is used? (by CONFIG setting for kernel building.)
Chan Kim


I saw the head.S file for arm64 (arch/arm64/kernel/head.S) assumes the x0 register contains the address of the device tree (dtb, or FDT).
But some systems use ACPI table for handing hardware configuration to the kernel(for example, I heard N1 SDP from arm uses ACPI tables).
If the system firmware and bootloader uses UEFI and ACPI, (and bootloader like grub), does the bootloader set x0 with dtb too(by inspecting ACPI table maybe)?
Or in this case, x0 is not set by the bootloader and x0 is unltimately not used in kernel during initialization and instead UEFI system table -> RSDP and ACPI table search and namespace building is used? (by CONFIG setting for kernel building.)
Chan Kim