将启动参数传递给内核¶
启动参数在内存中表示为 TLV 列表。有关 bp_tag 结构和标签值常数的定义,请参阅 arch/xtensa/include/asm/bootparam.h。列表中的第一个条目必须具有类型 BP_TAG_FIRST,最后一个条目必须具有类型 BP_TAG_LAST。第一个列表条目的地址通过寄存器 a2 传递给内核。地址类型取决于 MMU 类型
对于没有 MMU、具有区域保护或具有 MPU 的配置,该地址必须是物理地址。
对于具有区域转换 MMU 或具有 MMUv3 且 CONFIG_MMU=n 的配置,该地址必须是当前映射中的有效地址。内核不会自行更改映射。
对于具有 MMUv2 的配置,该地址必须是默认虚拟映射 (0xd0000000..0xffffffff) 中的虚拟地址。
对于具有 MMUv3 且 CONFIG_MMU=y 的配置,该地址可以是虚拟地址或物理地址。无论哪种情况,它都必须在默认虚拟映射范围内。如果它在默认 KSEG 映射所覆盖的物理地址范围内 (XCHAL_KSEG_PADDR.. XCHAL_KSEG_PADDR + XCHAL_KSEG_SIZE),则认为它是物理地址,否则认为它是虚拟地址。