armviz

ID_AA64MMFR0_EL1

64-bitIdentification

Which memory-management features are present, and the most important field on the whole register: PARange, the physical address width. A program that writes this register's PARange field is how Linux discovers how wide the address bus is.

Field layout

—
PARange[37:32]37:32
31:29
26
25
24
ASID[23:20]23:20
19
18:17
16
UAO[15:12]15:12
IDC[11:8]11:8
IC[7:4]7:4
TFR[3:0]3:0
byte 7
byte 6
byte 5
byte 4
byte 3
byte 2
byte 1
byte 0

Current value hover a field to locate it

B7
B6
B5
B4
B3
B2
B1
B0

Fields

BitsFieldBitsValueDescription
63:38—26Not assigned to a documented field. Values written here are reserved and should be treated as read-as-zero unless the architecture says otherwise.
37:32PARange[37:32]60x0 (0)

Physical address width: 32, 36, 40, 42, 44, 48 or 52 bits. This is what a bootloader reads to find out how much address space the chip has.

31:29ASID16[31:29]30x0

16-bit ASID support.

28:27—2Not assigned to a documented field. Values written here are reserved and should be treated as read-as-zero unless the architecture says otherwise.
26PAN[26:26]10x0

Privileged access never.

25LPA[25:25]10x0

Larger page sizes.

24LPD[24:24]10x0

Late permission check.

23:20ASID[23:20]40x0

ASID for EL1.

19TIL[19:19]10x0

TLB invalidate instruction by VA.

18:17TWL[18:17]20x0

TLB invalidate by VA, all levels.

16TIR[16:16]10x0

TLB invalidate by VA, EL1.

15:12UAO[15:12]40x0

Imprecise abort at EL0 to EL2.

11:8IDC[11:8]40x0

Data cache maintenance by VA to PoC.

7:4IC[7:4]40x0

Instruction cache maintenance by VA to PoU.

3:0TFR[3:0]40x0

Translation table format.