2. 啟動 Linux/LoongArch¶
- 作者:
Yanteng Si <siyanteng@loongson.cn>
- 日期:
2022 年 11 月 18 日
2.1. 從引導載入程式傳遞到核心的資訊¶
LoongArch 支援 ACPI 和 FDT。需要傳遞給核心的資訊包括 memmap、initrd、命令列、可選的 ACPI/FDT 表等等。
核心在 kernel_entry 上傳遞以下引數
a0 = efi_boot: efi_boot 是一個標誌,指示此引導環境是否完全符合 UEFI。
a1 = cmdline: cmdline 是指向核心命令列的指標。
a2 = systemtable: systemtable 指向 EFI 系統表。此階段涉及的所有指標都在物理地址中。
2.2. Linux/LoongArch 核心映象的頭部¶
Linux/LoongArch 核心映象都是 EFI 映象。作為 PE 檔案,它們具有一個 64 位元組的頭部,結構如下:
u32 MZ_MAGIC /* "MZ", MS-DOS header */
u32 res0 = 0 /* Reserved */
u64 kernel_entry /* Kernel entry point */
u64 _end - _text /* Kernel image effective size */
u64 load_offset /* Kernel image load offset from start of RAM */
u64 res1 = 0 /* Reserved */
u64 res2 = 0 /* Reserved */
u64 res3 = 0 /* Reserved */
u32 LINUX_PE_MAGIC /* Magic number */
u32 pe_header - _head /* Offset to the PE header */