This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Is First-level table skippable? (VMSA)

Hi forks. I am a newbie engineer for arm-processor and I have a question about VMSAv7-32.

According to ARMv8 architecture manual, page 3592: arm processor can skip first level table if a first level table would contain only one entry..

How arm processor determine it? How to know first level table has only one entry????

Parents Reply Children
  • ARMv8-A AArch32 supports two translation table formats, the short and long descriptor formats. 

    With the long descriptor format, you can have up to three levels of table:

    L1 - each entry covers 1G  (so up to 4 entries in stage 1 level 1 table)

    L2 - each entry covers 2MB (up to 512 entries)

    L3 - each entry covers 4K (always 512 entries)

    With the long descriptor format, you can have up to two levels of table:

    L1 - each entry covers 1MB (so up to 4096 entries)

    L2 - each entry covers 4K (always 256 entries)

    With the long descriptor format, you can skip level 1 if you shrink the address space to 1GB or less.  With the short descriptor format, you can still shrink the address space but you can't skip level 1).

    Note, that stage translation in AArch32 always uses the long descriptor format.

    NOTE: For ARMv7-A, only processors that implement LPAE support the long descriptor format.  That is the Cortex-A7, Cortex-A15 and Cortex-A17.