The purpose of the Translation Table Base Register 1 is to hold the physical address of the first level table. The expected use of the Translation Table Base Register 1 is for OS and I/O addresses.
The Translation Table Base Register 1 is:
a read/write register banked for Secure and Nonsecure states
accessible in privileged modes only.
Figure 3.27 shows the bit arrangement of the Translation Table Base Register 1.
Table 3.62 shows how the bit values correspond with the Translation Table Base Register 1 functions.
|[31:14]||Translation table base 1||Holds the translation table base address, the physical address of the first level translation table.|
|[13:5]||-||Reserved. RAZ, SBZ.|
Indicates the outer cacheable attributes for translation table walking:
b00 = outer noncacheable
b01 = write-back, write allocate
b10 = write-through, no allocate on write
b11 = write-back, no allocate on write.
|||P||Reserved, RAZ and ignore writes. This bit is not implemented on this processor.|
Indicates the translation table walk is to nonshared or to shared memory:
0 = nonshared
1 = shared.
Indicates the translation table walk is inner cacheable or inner noncacheable:
0 = inner noncacheable
1 = inner cacheable.
Table 3.63 shows the results of attempted access for each mode.
|Secure privileged||Nonsecure privileged||Secure User||Nonsecure User|
|Secure data||Secure data||Nonsecure data||Nonsecure data||Undefined||Undefined||Undefined||Undefined|
A write to the Translation Table Base Register 1 updates the address of the first level translation table from the value in bits [31:14] of the written value. Bits [13:5] Should-Be-Zero. The Translation Table Base Register 1 must reside on a 16KB page boundary.
To access the Translation Table Base Register 1, read or write CP15 with:
MRC p15, 0, <Rd>, c2, c0, 1 ; Read Translation Table Base Register 1
MCR p15, 0, <Rd>, c2, c0, 1 ; Write Translation Table Base Register 1
The processor cannot perform a translation table walk from L1 cache. Therefore, if C is set to 1, to ensure coherency, you must store translation tables in inner write-through memory. If you store the translation tables in an inner write-back memory region, you must clean the appropriate cache entries after modification so that the mechanism for the hardware translation table walks sees them.