1 Stage 1 Page Table Attributes
(Attribute fields in stage 1 VMSAv8-64 Block and Page descriptors)

-
PBHA, bits[62:59]: for FEAT_HPDS2
-
XN or UXN, bit[54]: Execute-never or Unprivileged execute-never
-
PXN, bit[53]: Privileged execute-never
-
Contiguous, bit[52]: The translation table entry is contiguous and can exist in a TLB Entry
-
DBM, bit[51]: Dirty Bit Modifier
-
GP, bit[50]: for FEAT_BTI
-
nT, bit[16]: for FEAT_BBM
-
nG, bit[11]: Whether the translation cached in TLB uses ASID identification
-
AF, bit[10]: Access flag, AF=0 means that the first access to this page will set this flag to 1, indicating the first access
-
SH, bits[9:8]: shareable attribute
-
AP,[2:1], bits[7:6]: Data Access Permissions bits,
-
NS, bit[5]: Non-secure bit
-
AttrIndx[2:0], bits[4:2]
2 Stage 2 Page Table Attributes
(Attribute fields in stage 2 VMSAv8-64 Block and Page descriptors)
-
PBHA[3:1], bits[62:60]: for FEAT_HPDS2
-
PBHA[0], bit[59]: for FEAT_HPDS2
-
XN[1:0], bits[54:53]: Execute-never
-
Contiguous, bit[52]: The translation table entry is contiguous and can exist in a TLB Entry
-
DBM, bit[51]: Dirty Bit Modifier
-
nT, bit[16]: for FEAT_BBM
-
FnXS, bit[11]: for FEAT_XS
-
AF, bit[10]: Access flag
-
SH, bits[9:8]: shareable attribute
-
S2AP, bits[7:6]: Stage 2 data Access Permissions
-
MemAttr, bits[5:2]
3 Detailed Introduction to Each Flag
3.1 MemAttr

3.2 NS
Non-secure bit indicates whether the converted physical address is secure or non-secure. In a dual-system environment with REE (Linux) and TEE (OP-TEE), both systems’ MMUs can be enabled simultaneously. Different page tables are used for secure and non-secure. The secure page table can map non-secure memory, while the non-secure page table cannot map secure memory; otherwise, an error will occur during conversion.

3.3 AP
Data access permissions

3.4 SH
Shareable attribute

3.5 AF
Access flag, when AF=0, the first access to this page will set this flag to 1, indicating the first access
3.6 nG
For EL0/EL1 virtual address space, the nG bit in the Page Descriptor attribute field marks the translation as Global (G) or non-Global (nG). For example, kernel mappings are Global (G) translations, while application mappings are non-Global translations. Global translations apply to any currently running application. Non-global translations apply only to specific applications.
Non-global mappings are tagged with ASID in the TLB. During TLB lookup, the ASID in the TLB entry is compared with the currently selected ASID. If they do not match, the TLB entry is not used. The following image shows global mappings without ASID tags in kernel space and non-global mappings with ASID tags in user space.
3.7 DBM
TODO
3.8 Contiguous
TODO
3.9 XN or UXN
Flags indicating that instructions cannot be executed from this memory region for privileged and unprivileged modes: Execute-never, Unprivileged execute-never