You copied the Doc URL to your clipboard.

3.3.6. c1, Control Register

The purpose of the Control Register is to provide control and configuration of:

  • memory alignment, endianness, protection, and fault behavior

  • MMU and cache enables and cache replacement strategy

  • interrupts and the behavior of interrupt latency

  • the location for exception vectors

  • program flow prediction.

The Control Register is:

  • in CP15 c1

  • a 32 bit register

    • Table 3.44 describes read and write access to individual bits

  • accessible in privileged mode only.

Figure 3.26 shows the arrangement of bits in the register.

Figure 3.26. Control Register format

Figure 3.26. Control Register format

Table 3.44 lists the bit functions of the Control Register.

Control Register bit functions

Bit

Name

Function

[31:30]

-

Reserved. This field is UNP/RAZ when read. Write as the existing value.

[29]AFE bit

Access Flag Enable. This bit controls the generation of Access Flag (AF) faults by AP[0].

0 = Generation of AF faults by AP[0] is disabled. Normal ARMv6 behavior. Reset value.

1 = Generation of AF faults by AP[0] is enabled.

The AFE bit is only defined from the rev1 (r1p0) release of the ARM1136JF-S processor. This bit is reserved in earlier releases (UNP/RAZ when read, write as the existing value).

[28]TRE bit

TEX Remap enable. This bit controls the TEX remap functionality in the MMU.

0 = TEX remap disabled. Normal ARMv6 behavior. Reset value.

1 = TEX remap enabled. TEX[2:1] become page table bits for OS.

The TRE bit is only defined from the rev1 (r1p0) release of the ARM1136JF-S processor. This bit is reserved in earlier releases (UNP /RAZ when read, write as the existing value).

[27:26]

-

Reserved. This field is UNP/RAZ when read. Write as the existing value.

[25]EE bit

This bit determines the setting of the CPSR E bit on taking an exception:

0 = CPSR E bit is set to 0 on taking an exception

1 = CPSR E bit is set to 1 on taking an exception.

The reset value of this bit depends on external signals, see Control Register reset value.

[24]VE bit

Configure vectored interrupt. Enables the VIC interface to determine the interrupt vectors:

0 = Interrupt vectors are fixed. See the description of the V bit (bit 13)

1 = Interrupt vectors are defined by the VIC interface.

[23]XP bit

Configure extended page table configuration. This bit configures the hardware page translation mechanism:

0 = Subpage AP bits enabled

1 = Subpage AP bits disabled (ARMv6 mode).

[22]U bit

Enables unaligned data access operations, including support for mixed little-endian and big-endian operation. The A bit has priority over the U bit.

0 = Unaligned data access support disabled, reset value. The processor treats unaligned loads as rotated aligned data accesses.

1 = Unaligned data access support enabled. The processor permits unaligned loads and stores and support for mixed endian data is enabled.

The reset value of this bit depends on external signals, see Control Register reset value.

[21]FI bit

Configure fast interrupt configuration:

0 = All performance features enabled

1 = Low interrupt latency configuration enabled.

This bit enables low interrupt latency features, see Low interrupt latency configuration.

[20:19]-

Reserved. This field is UNP/RAZ when read. Write as the existing value.

[18]IT bit

Global Instruction TCM enable/disable bit. This bit is used in ARM946 and ARM966 processors to enable the Instruction TCM. In ARMv6, the TCM blocks have individual enables that apply to each block. As a result, this bit is now redundant.

This bit Should Be One on writes, and returns one on reads.

See c9, Instruction TCM Region Register for a description of the ARM1136JF-S TCM enables.

[17]-

Reserved. This field is UNP/RAZ when read. Write as the existing value.

[16]DT bit

Global Data TCM enable/disable bit. This bit is used in ARM946 and ARM966 processors to enable the Data TCM. In ARMv6, the TCM blocks have individual enables that apply to each block. As a result, this bit is now redundant.

This bit Should Be One on writes, and returns one on reads.

See c9, Instruction TCM Region Register for a description of the ARM1136JF-S TCM enables.

[15]

L4 bit

Configure if load instructions to PC set the T bit:

0 = Loads to PC set the T bit

1 = Loads to PC do not set the T bit (ARMv4 behavior).

For more details see the ARM Architecture Reference Manual.

[14]

RR bit

Replacement strategy for the instruction and data caches:

0 = Normal replacement strategy (Random replacement)

1 = Predictable replacement strategy (Round-Robin replacement).

[13]

V bit

Location of exception vectors:

0 = Normal exception vectors selected, address range = 0x00000000-0x0000001C

1 = High exception vectors selected, address range = 0xFFFF0000-0xFFFF001C.

The reset value of this bit depends on the external VINITHI signal, see Control Register reset value.

[12]

I bit

Level one Instruction Cache enable/disable:

0 = Instruction Cache disabled

1 = Instruction Cache enabled.

[11]

Z bit

Program flow prediction:

0 = Program flow prediction disabled

1 = Program flow prediction enabled.

Program flow prediction includes static and dynamic branch prediction and the return stack. This bit enables all three forms of program flow prediction. You can enable or disable each form individually, see c1, Auxiliary Control Register.

[10]F bit

The meaning of this bit is Implementation-defined.

For ARM1136JF-S processors, this bit Should Be Zero on writes and Reads As Zero on reads.

[9]

R bit

ROM protection. This bit modifies the ROM protection system:

0 = ROM protection disabled

1 = ROM protection enabled.

Modifying the R bit does not affect the access permissions of entries already in the TLB. See MMU software-accessible registers.

[8]

S bit

System protection. This bit modifies the MMU protection system:

0 = MMU protection disabled

1 = MMU protection enabled.

Modifying the S bit does not affect the access permissions of entries already in the TLB.

[7]

B bit

Determines operation as little-endian or big-endian word invariant memory system and the names of the low four-byte addresses within a 32-bit word:

0 = Little-endian memory system

1 = Big-endian word-invariant memory system.

The reset value of this bit depends on external signals, see Control Register reset value.

[6:4]

-

When read returns one and when written Should Be One.

[3]W bitWrite buffer enable/disable. Not implemented in the ARM1136JF-S processor because all memory writes take place through the Write Buffer. This bit reads as 1 and ignores writes.
[2]

C bit

Level one Data Cache enable/disable:

0 = Data cache disabled

1 = Data cache enabled.

[1]

A bit

Strict data address alignment fault enable/disable:

0 = Strict alignment fault checking disabled

1 = Strict alignment fault checking enabled.

The A bit setting takes priority over the U bit. The Data Abort trap is taken if strict alignment is enabled and the data access is not aligned to the width of the accessed data item.

[0]

M bit

MMU enable/disable:

0 = MMU disabled

1 = MMU enabled.

Control Register reset value

All defined bits in the Control Register are set to zero on Reset except:

  • The V bit (bit[13]) is set to zero at Reset if the VINITHI signal is LOW, or one if the VINITHI signal is HIGH.

  • The B bit (bit[7]), U bit (bit[22]), and EE bit (bit[25]) are set according to the state of the BIGENDINIT and UBITINIT inputs. Table 3.45 shows these settings.

    B bit, U bit, and EE bit settings, and Control Register reset value
    CFGEND[1:0]EEUBControl Register reset value
    UBITINITBIGENDINITVINITHI = 0VINITHI = 1
    000000x000500780x00052078
    010010x000500F80x000520F8
    100100x004500780x00452078
    111100x024500780x02452078

Accessing the Control Register

Table 3.46 shows the results of attempted accesses to the Control Register for each mode.

Results of accesses to the Control Register
Privileged readPrivileged writeUser read or write
Data readData writeUndefined exception

To access the Control Register you read or write CP15 c1 with the CRm and Opcode_2 fields set to 0:

  • Opcode_1 set to 0

  • CRn set to c1

  • CRm set to c0

  • Opcode_2 set to 0.

For example:

MRC p15,0,<Rd>,c1,c0,0            ; Read Control Register configuration data
MCR p15,0,<Rd>,c1,c0,0            ; Write Control Register configuration data

ARM strongly recommends that you access this register using a read-modify-write sequence.

Take care with the address mapping of the code sequence used to enable the MMU, see Enabling the MMU for more information. See Disabling the MMU for restrictions and effects of having caches enabled with the MMU disabled.