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 */