向内核传递引导参数

引导参数在内存中表示为 TLV 列表。请参阅 arch/xtensa/include/asm/bootparam.h 以获取 bp_tag 结构和标签值常量的定义。列表中的第一个条目必须具有 BP_TAG_FIRST 类型,最后一个条目必须具有 BP_TAG_LAST 类型。第一个列表条目的地址通过寄存器 a2 传递给内核。地址类型取决于 MMU 类型。

  • 对于没有 MMU、具有区域保护或具有 MPU 的配置,该地址必须是物理地址。

  • 对于具有区域转换(region translation)MMU,或使用 MMUv3 且 CONFIG_MMU=n 的配置,该地址必须是当前映射中的有效地址。内核不会自行更改映射。

  • 对于具有 MMUv2 的配置,该地址必须是默认虚拟映射(0xd0000000..0xffffffff)中的虚拟地址。

  • 对于使用 MMUv3 且 CONFIG_MMU=y 的配置,地址可以是虚拟地址或物理地址。无论哪种情况,它都必须在默认虚拟映射范围内。如果它在默认 KSEG 映射所覆盖的物理地址范围内(XCHAL_KSEG_PADDR.. XCHAL_KSEG_PADDR + XCHAL_KSEG_SIZE),则被视为物理地址,否则被视为虚拟地址。