1 .. SPDX-License-Identifier: GPL-2.0 1 .. SPDX-License-Identifier: GPL-2.0 2 2 3 ======================= !! 3 BMIPS DeviceTree Booting 4 Booting Linux/LoongArch !! 4 ------------------------ 5 ======================= !! 5 6 !! 6 Some bootloaders only support a single entry point, at the start of the 7 :Author: Yanteng Si <siyanteng@loongson.cn> !! 7 kernel image. Other bootloaders will jump to the ELF start address. 8 :Date: 18 Nov 2022 !! 8 Both schemes are supported; CONFIG_BOOT_RAW=y and CONFIG_NO_EXCEPT_FILL=y, 9 !! 9 so the first instruction immediately jumps to kernel_entry(). 10 Information passed from BootLoader to kernel !! 10 11 ============================================ !! 11 Similar to the arch/arm case (b), a DT-aware bootloader is expected to 12 !! 12 set up the following registers: 13 LoongArch supports ACPI and FDT. The informati !! 13 14 to the kernel includes the memmap, the initrd, !! 14 a0 : 0 15 the ACPI/FDT tables, and so on. !! 15 16 !! 16 a1 : 0xffffffff 17 The kernel is passed the following arguments o !! 17 18 !! 18 a2 : Physical pointer to the device tree block (defined in chapter 19 - a0 = efi_boot: `efi_boot` is a flag in !! 19 II) in RAM. The device tree can be located anywhere in the first 20 this boot environment is fully UEFI-co !! 20 512MB of the physical address space (0x00000000 - 0x1fffffff), 21 !! 21 aligned on a 64 bit boundary. 22 - a1 = cmdline: `cmdline` is a pointer t !! 22 23 !! 23 Legacy bootloaders do not use this convention, and they do not pass in a 24 - a2 = systemtable: `systemtable` points !! 24 DT block. In this case, Linux will look for a builtin DTB, selected via 25 All pointers involved at this stage ar !! 25 CONFIG_DT_*. 26 !! 26 27 Header of Linux/LoongArch kernel images !! 27 This convention is defined for 32-bit systems only, as there are not 28 ======================================= !! 28 currently any 64-bit BMIPS implementations. 29 << 30 Linux/LoongArch kernel images are EFI images. << 31 a 64-byte header structured like:: << 32 << 33 u32 MZ_MAGIC /* "MZ << 34 u32 res0 = 0 /* Res << 35 u64 kernel_entry /* Ker << 36 u64 _end - _text /* Ker << 37 u64 load_offset /* Ker << 38 u64 res1 = 0 /* Res << 39 u64 res2 = 0 /* Res << 40 u64 res3 = 0 /* Res << 41 u32 LINUX_PE_MAGIC /* Mag << 42 u32 pe_header - _head /* Off <<
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.