You copied the Doc URL to your clipboard.

3.3.12. c3, Domain Access Control Register

The purpose of the Domain Access Control Register is to hold the access permissions for a maximum of 16 domains, D15 to D0.

The Domain Access Control Register is:

  • in CP15 c3

  • a 32-bit read/write register

  • accessible in privileged mode only.

Figure 3.32 shows the two-bit domain access permission fields of the register.

Figure 3.32. Domain Access Control Register format

Figure 3.32. Domain Access Control Register format

Table 3.59 shows how the bit values correspond with the Domain Access Control Register functions.

Table 3.58. Domain Access Control Register field descriptions
Bit rangeField nameFunction
[a]D<n>[b]

The purpose of the fields D15-D0 is to define the access permissions for each of the 16 domains. These domains can be either sections, large pages or small pages of memory. Table 3.59 shows the encoding used for the domain access control fields.

[a] There are 16 two-bit D fields. See Figure 3.32 for the bit range for each field.

[b] n is the Domain number in the range 0 to 15.


Table 3.59 shows the encoding used for the bit fields in the Domain Access Control Register.

Table 3.59. Encoding of domain access control fields in the Domain Access Control Register
ValueAccess typeDescription
b00No accessAny access generates a domain fault.
b01ClientAccesses are checked against the access permission bits in the TLB entry.
b10ReservedAny access generates a domain fault.
b11ManagerAccesses are not checked against the access permission bits in the TLB entry, so a permission fault cannot be generated.

Accessing the Domain Access Control Register

Table 3.60 shows the results of attempted accesses to the Domain Access Control Register for each mode.

Table 3.60. Results of accesses to the Domain Access Control Register
Privileged readPrivileged writeUser read or write
Data readData writeUndefined Instruction exception

You can access the Domain Access Control Register by reading or writing CP15 with:

  • Opcode_1 set to 0

  • CRn set to c3

  • CRm set to c0

  • Opcode_2 set to 0.

For example:

MRC p15, 0, <Rd>, c3, c0, 0            ; Read Domain Access Control Register
MCR p15, 0, <Rd>, c3, c0, 0            ; Write Domain Access Control Register