4.3.58. L2 Control Register, EL1

The L2CTLR_EL1 characteristics are:

Purpose

Provides implementation defined control options for the L2 memory system and ECC/parity support. There is one L2 Control Register for the Cortex-A57 MPCore device.

Usage constraints

The accessibility to the L2CTLR_EL1 by Exception level is:

EL0EL1(NS)EL1(S)EL2EL3(SCR.NS = 1)EL3(SCR.NS = 0)
-RW[a]RW[a]RW[b]RWRW

[a] Write access if ACTLR_EL3.L2CTLR is 1 and ACTLR_EL2.L2CTLR is 1, or, ACTLR_EL3.L2CTLR is 1 and the Secure SCR.NS is 0.

[b] Write access if ACTLR_EL3.L2CTLR is 1.

Note

The L2CTLR_EL1 must be set statically and not dynamically changed.

The L2 Control Register can only be written when the L2 memory system is idle. ARM recommends that you write to this register after a powerup reset before the MMU is enabled and before any ACE, CHI, or ACP traffic begins.

If the register must be modified after a powerup reset sequence, you must idle the L2 memory system with the following sequence:

  1. Disable the MMU from each processor followed by an ISB to ensure the MMU disable operation is complete, then execute a DSB to drain previous memory transactions.

  2. Ensure that the system has no outstanding AC channel or CHI RXRSP coherence requests to the multiprocessor.

  3. Ensure that the system has no outstanding ACP requests to the multiprocessor.

When the L2 is idle, the processor can update the L2 Control Register followed by an ISB. After the L2 Control Register is updated, you can enable the MMUs and normal ACE or CHI and ACP traffic can resume.

Configurations

The L2CTLR_EL1 is:

  • Common to the Secure and Non-secure states.

  • A 32-bit register in AArch64 state.

  • Architecturally mapped to the AArch32 L2CTLR register.

Attributes

See the register summary in Table 4.15.

Figure 4.50 shows the L2CTLR_EL1 bit assignments.

Figure 4.50. L2CTRL_EL1 bit assignments

To view this graphic, your browser must support the SVG format. Either install a browser with native support, or install an appropriate plugin such as Adobe SVG Viewer.


Table 4.67 shows the L2CTLR_EL1 bit assignments.

Table 4.67. L2CTLR_EL1 bit assignments

BitsNameFunction
[31]L2RSTDISABLE monitor

Monitors the L2 hardware reset disable signal, L2RSTDISABLE. The values are:

0

L2 valid RAM contents are reset by hardware.

1

L2 valid RAM contents are not reset by hardware.

This bit is read-only. The primary input L2RSTDISABLE controls the reset value.

[30:26]-

Reserved, res0.

[25:24]Number of processors

Number of processors present. These bits are read-only and set to the number of processors present in the implementation. The values are:

0b00

One processor, CPU0.

0b01

Two processors, CPU0 and CPU1.

0b10

Three processors, CPU0, CPU1, and CPU2.

0b11

Four processors, CPU0, CPU1, CPU2, and CPU3.

[23]-

Reserved, res0.

[22]L1 Cache ECC and Parity protection

This bit is read-only and is set if the multiprocessor implementation supports L1 cache ECC and parity protection. The L1 cache ECC and parity protection is a configurable implementation option in Cortex-A57 MPCore. The values are:

0

L1 data cache ECC and L1 instruction cache parity is not supported.

1

L1 data cache ECC and L1 instruction cache parity is supported.

[21]ECC and parity enable

ECC and parity enable. The values are:

0

Disables ECC and parity. This is the reset value.

1

Enables ECC and parity.

If Cortex-A57 is implemented with L1 Cache ECC and parity protection, L2CTLR[21] can be programmed to enable or disable both L1 and L2 ECC and parity protection.

If Cortex-A57 is implemented with no L1 Cache ECC and parity protection, L2CTLR[21] can be programmed to enable or disable only L2 ECC and parity protection.

[20]Data inline ECC enable, only applies if ECC is enabled

Force inline ECC for Instruction Fetch (IF) and Load/Store (LS) read requests that hit the L2 cache increasing the L2 hit latency by 2 cycles. Avoids requirement of flushing requests associated with L2 cache single-bit ECC errors. The possible values are:

0

Performance optimization reducing L2 hit latency by 2 cycles allowing uncorrected data for IF and LS read requests that hit the L2 cache. This is the reset value.

1

Forward only corrected data for L2 cache hits avoiding flushing request for single-bit ECC errors.

[19:14]-

Reserved, res0.

[13]L2 arbitration slice

L2 arbitration slice. This is a read-only bit that is set if the L2 arbitration slice is present in the implementation. The values are:

0

L2 arbitration slice is not present.

1

One L2 arbitration slice is present.

[12]L2 Tag RAM slice

L2 Tag RAM slice. This is a read-only bit that is set if the Tag RAM slice is present in the implementation. The values are:

0

L2 Tag RAM slice is not present.

1

One L2 Tag RAM slice is present.

[11:10]L2 Data RAM slice

L2 Data RAM slice. These are read-only bits that are set to the number of Data RAM slices present in the implementation. The values are:

0b00

L2 Data RAM slices are not present.

0b01

One L2 Data RAM slice is present.

0b10

Two L2 Data RAM slices are present.

0b11

Invalid value.

[9]L2 Tag RAM setup

L2 Tag RAM setup. The values are:

0

0 cycle. This the reset value.

1

1 cycle.

[8:6]L2 Tag RAM latency

L2 Tag RAM latency.[a] The L2 Tag RAM programmable setup and latency bits only affect the L2 Tag RAM. See Register slice support for large cache sizes for more information. The possible values are:

0b000

2 cycles. This is the reset value.

0b001

2 cycles.

0b010

3 cycles.

0b011

4 cycles.

0b1xx

5 cycles.

[5]L2 Data RAM setup

L2 Data RAM setup. The values are:

0

0 cycle. This the reset value.

1

1 cycle.

[4:3]-

Reserved, res0.

[2:0]L2 Data RAM latency

L2 Data RAM latency.[a] The L2 Data RAM programmable setup & latency bits affect only the L2 Data RAM. See Register slice support for large cache sizes for more information. The values are:

0b000

2 cycles. This is the reset value.

0b001

2 cycles.

0b010

3 cycles.

0b011

4 cycles.

0b100

5 cycles.

0b101

6 cycles.

0b110

7 cycles.

0b111

8 cycles.

[a] Slice and Set-up have priority over programmed latency in determining total adjusted pipeline depth.


To access the L2CTLR_EL1 in AArch64 state, read or write the register with:

MRS <Xt>, S3_1_c11_c0_2; Read L2 Control Register
MSR S3_1_c11_c0_2, <Xt>; Write L2 Control Register

To access the L2CTLR in AArch32 state, read or write the CP15 register with:

MRC p15, 1, <Rt>, c9, c0, 2; Read L2 Control Register
MCR p15, 1, <Rt>, c9, c0, 2; Write L2 Control Register
Copyright © 2013, 2014 ARM. All rights reserved.ARM DDI 0488D
Non-ConfidentialID012914