ACPI 中文文档ACPI 中文文档
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
  • 第 15 章

    • 总览
    • 15.1. INT 15H, E820H - 查询系统地址映射
    • 15.2. E820 假设与限制
    • 15.3. UEFI GetMemoryMap() 启动服务函数
    • 15.4. UEFI 假设和限制
    • 15.5. 示例地址映射
    • 15.6. 示例:操作系统用法

15.1. INT 15H, E820H - 查询系统地址映射

该接口仅在基于 IA-PC 的系统的实模式下使用,并提供所有已安装 RAM 以及 BIOS 保留的物理内存范围的内存映射。地址映射通过连续调用此接口返回;每次调用返回一个物理地址范围的信息。每个范围都包含一个类型,指示 OSPM 应如何处理该物理地址范围。

如果从 E820 返回的信息在某种程度上与 INT-15 88 或 INT-15 E801 不同,则以 E820 返回的信息为准,覆盖 INT-15 88 或 INT-15 E801 返回的信息。此替换允许 BIOS 出于兼容性原因返回来自 INT-15 88 或 INT-15 E801 的任何所需信息。出于兼容性原因,如果 E820 在 16 MiB 以下返回任何 AddressRangeACPI 或 AddressRangeNVS 内存范围,则 INT-15 88 和 INT-15 E801 函数必须返回位于 AddressRangeACPI 和 AddressRangeNVS 内存范围下方的内存顶部地址。

此接口传达的内存映射不要求反映 BIOS 最初将控制权交给操作系统之后可用物理内存所发生的任何变化。例如,如果动态添加了内存,则此接口不要求反映新的系统内存配置。

表 15.2 INT 15h E820h 调用的输入

寄存器内容描述
EAX功能代码E820h
EBX续接值包含用于获取下一物理内存范围的续接值。该值是此前对此例程调用返回的值。如果这是第一次调用,EBX 必须包含零。
ES:DI缓冲区指针指向 BIOS 填充的地址范围描述符结构的指针。
ECX缓冲区大小传递给 BIOS 的结构长度(字节)。BIOS 填充 ECX 寄存器中所指示数量的字节,最多不超过其实现的结构长度。BIOS 和调用方都必须支持的最小大小为 20 字节。未来的实现可能会扩展此结构。
EDX签名‘SMAP’ BIOS 用于验证调用方是否请求在 ES:DI 中返回系统映射信息。

表 15.3 INT 15h E820h 调用的输出

寄存器内容描述
CF进位标志无进位 - 表示无错误
EAX签名‘SMAP.’ 用于验证 BIOS 修订版正确性的签名。
ES:DI缓冲区指针返回的地址范围描述符指针。与输入时的值相同。
ECX缓冲区大小BIOS 在地址范围描述符中返回的字节数。BIOS 返回的最小大小结构为 20 字节。
EBX续接值包含用于获取下一地址范围描述符的续接值。续接值的实际意义由 BIOS 自行决定。调用方必须将续接值作为下一次 E820 调用的输入原样传递,以获取下一个地址范围描述符。返回值为零表示这是最后一个描述符。注意:BIOS 也可以通过将进位标志置位返回,指示最后一个描述符已在之前的迭代中返回。进位标志置位时,调用方将忽略 BIOS 返回的任何其他信息。

表 15.4 地址范围描述符结构

字节偏移名称描述
0BaseAddrLow基地址的低 32 位
4BaseAddrHigh基地址的高 32 位
8LengthLow长度的低 32 位(字节)
12LengthHigh长度的高 32 位(字节)
16Type该范围的地址类型
20Extended Attributes见 地址范围描述符结构的扩展属性

BaseAddrLow 和 BaseAddrHigh 一起构成该范围的 64 位基地址。基地址是所指定范围起始处的物理地址。

LengthLow 和 LengthHigh 一起构成该范围的 64 位长度。长度是所指定范围在物理上连续的字节长度。

Type 字段描述了 地址范围类型 中定义的该地址范围的用途。

表 15.5 地址范围描述符结构的扩展属性

位助记符描述
0Reserved保留,必须设置为 1。
2:1Reserved保留,必须设置为 0。
3AddressRangeErrorLog如果置位,则该地址范围描述符表示用于记录硬件错误的内存。
31:4Reserved保留供将来使用。

注意

上面的位 [1] 和 [2] 自 ACPI 6.1 起已弃用。位 [3] 仅在 PC-AT BIOS 系统上用于在内存中定位错误日志。在基于 UEFI 的系统上,必须实现 UEFI 硬件错误记录 HwErrRec#### 运行时 UEFI 变量接口,或为 APEI ERST 接口实现错误记录序列化操作 0xD、0xE 和 0xF,以用于错误日志。

Prev
总览
Next
15.2. E820 假设与限制