D4.3.2 ARMv8 translation table level 3 descriptor formats

使用 4KB granule 时,level 3 table 中的每一个 entry 都映射了 4KB 的 input address range。
使用 16KB granule 时,level 3 table 中的每一个 entry 都映射了 16KB 的 input address range。
使用 64KB granule 时,level 3 table 中的每一个 entry 都映射了 64KB 的 input address range。

Figure D4-17 描述了 ARMv8 level 3 descriptor 的格式。

Descriptor 的 bit[0] 指明该 descriptor 是否有效,该 bit 为 1 时,为有效的 descriptor。如果一次 lookup 操作返回一个无效的 descriptor,那么就意味着该 input address 没有进行映射,当访问该 input address 时,会产生 Translation fault。

Descriptor 的 bit[1] 指明该 descriptor 的类型,如下所示:

0 Reserved, invalid 与 bit[0] 为 0 时的效果一样,指示 Descriptor 为无效的。
1 Page Descriptor 包含了 4KB、16KB 或者 64KB page 的地址和属性信息。

在此 level 中,只存在 Page descriptor。Page descriptor 的其他位的含义如下:

Page descriptor
该 descriptor 包含了一个 page 的地址,如下所示:

  • 4KB translation granule
    Bits[47:12] 为 page 的地址的 bits[47:12]。
  • 16KB translation granule
    Bits[47:14] 为 page 的地址的 bits[47:14]。
  • 64KB translation granule
    Bits[47:16] 为 page 的地址的 bits[47:16]。

Bits[63:52, 11:2] 包含 page 的属性信息,更多细节参考 Memory attribute fields in the VMSAv8-64 translation table format descriptors 章节.

NOTE:
Page descriptor 的 bits[63:52, 11:2] 与 level 0、level 1 和 level 2 中的 block descriptor 中的 bits[63:52, 11:2] 的用途是相同的。

如果 translation table 属于 Non-secure EL1&0 stage 1 translation,那么 descriptor 中的 output address 为 page 的 IPA,如果不属于,那么 output address 为 page 的 PA。

results matching ""

    No results matching ""