D4.3.1 VMSAv8-64 translation table level 0 level 1 and level 2 descriptor formats

In the VMSAv8-64 translation table format, the difference in the formats of the level 0, level 1 and level 2 descriptors is:

  • Whether a block entry is permitted.
  • If a block entry is permitted, the size of the memory region described by that entry.

These differences depend on the translation granule, as follows:
4KB granule
A level 0 descriptor does not support block translation.
A block entry:

  • In a level 1 table describes the mapping of the associated 1GB input address range.
  • In a level 2 table describes the mapping of the associated 2MB input address range.

16KB granule
Level 0 and level 1 descriptors do not support block translation.
A block entry in a level 2 table describes the mapping of the associated 32MB input address range.

64KB granule
Level 0 lookup is not supported.
A level 1 descriptor does not support block translation.
A block entry in a level 2 table describes the mapping of the associated 512MB input address range.

Figure D4-16 on page D4-1696 shows the ARMv8 level 0, level 1, and level 2 descriptor formats:

Descriptor encodings, ARMv8 level 0, level 1, and level 2 formats

Descriptor bit[0] identifies whether the descriptor is valid, and is 1 for a valid descriptor. If a lookup returns an invalid descriptor, the associated input address is unmapped, and any attempt to access it generates a Translation fault.
Descriptor bit[1] identifies the descriptor type, and is encoded as:

0 Block The descriptor gives the base address of a block of memory, and the attributes for that memory region.
1 Table The descriptor gives the address of the next level of translation table, and for a stage 1 translation, some attributes for that translation.

The other fields in the valid descriptors are:

Block descriptor
Gives the base address and attributes of a block of memory, as follows:

4KB translation granule

  • For a level 1 Block descriptor, bits[47:30] are bits[47:30] of the output address. This output address specifies a 1GB block of memory.
  • For a level 2 descriptor, bits[47:21] are bits[47:21] of the output address.This output address specifies a 2MB block of memory.

16KB translation granule
For a level 2 Block descriptor, bits[47:25] are bits[47:25] of the output address.This output address specifies a 32MB block of memory.

64KB translation granule
For a level 2 Block descriptor, bits[47:29] are bits[47:29] of the output address.This output address specifies a 512MB block of memory. Bits[63:52, 11:2] provide attributes for the target memory block, see Memory attribute fields in the VMSAv8-64 translation table format descriptors on page D4-1699. The position and contents of these bits are identical in the level 2 block descriptor and in the level 3 page descriptor.

Table descriptor
Gives the translation table address for the next-level lookup, as follows:

4KB translation granule

  • Bits[47:12] are bits[47:12] of the address of the required next-level table, which is:
    • For a level 0 Table descriptor, the address of a level 1 table.
    • For a level 1Table descriptor, the address of a level 2 table.
    • For a level 2 Table descriptor, the address of a level 3 table.
  • Bits[11:0] of the table address are zero.

16KB translation granule

  • Bits[47:14] are bits[47:14] of the address of the required next-level table, which is:
    • For a level 0 Table descriptor, the address of a level 1 table.
    • For a level 1 Table descriptor, the address of a level 2 table.
    • For a level 2 Table descriptor, the address of a level 3 table.
  • Bits[13:0] of the table address are zero.

64KB translation granule

  • Bits[47:16] are bits[47:16] of the address of the required next-level table, which is:
    • For a level 1 Table descriptor, the address of a level 2 table.
    • For a level 2 Table descriptor, the address of a level 3 table.
  • Bits[15:0] of the table address are zero.

For a stage 1 translation only, bits[63:59] provide attributes for the next-level lookup, see Memory attribute fields in the VMSAv8-64 translation table format descriptors on page D4-1699.

If the translation table defines the Non-secure EL1&0 stage 1 translations, then the output address in the descriptor is the IPA of the target block or table. Otherwise, it is the PA of the target block or table.

results matching ""

    No results matching ""