2.3.16. Register 15, Cache debug index register

Register 15 gives you access to the test features included within the ARM946E-S.

Additional instructions and operations are required to support debug operations within the cache. Instructions for the additional operations are listed in Table 2.27.

Table 2.27. Additional operations

Function

Data

Instruction

Write CP15 cache debug index register

Index/

segment

MCR p15, 3, rd, c15, c0, 0

Read CP15 cache debug index register

Index/

segment

MRC p15, 3, rd, c15, c0, 0

Instruction TAG write

Data

MCR p15, 3, rd, c15, c1, 0

Instruction TAG read

Data

MRC p15, 3, rd, c15, c1, 0

Data TAG write

Data

MCR p15, 3, rd, c15, c2, 0

Data TAG read

Data

MRC p15, 3, rd, c15, c2, 0

Instruction cache write

Data

MCR p15, 3, rd, c15, c3, 0

Instruction cache read

Data

MRC p15, 3, rd, c15, c3, 0

Data cache write

Data

MCR p15, 3, rd, c15, c4, 0

Data cache read

Data

MRC p15, 3, rd, c15, c4, 0

With the cache debug index register (CP15 r15), you can access any location within the instruction or data cache. You must program this register before using any of the TAG or cache read/write operations. The cache debug index register provides an index into the cache memories.

The format of the index/segment data is shown in Figure 2.5.

Figure 2.5. Index/segment format

The size of the index varies depending on the implemented cache size. Table 2.20 shows how the index address field size changes for the cache sizes supported by the ARM946E-S.

Note

For TAG operations, the word address field in the cache debug register is ignored.

The data format for the TAG read/write operations is shown in Figure 2.6.

Figure 2.6. Data format TAG read/write operations

The size of the index and address TAGs vary depending on the implemented cache size. Table 2.28 shows how the index and TAG address field sizes change for the cache sizes supported by the ARM946E-S.

Table 2.28. Index fields for supported cache sizes

Cache size

TAG

Index

4KB

Addr[31:10]

Addr[9:5]

8KB

Addr[31:11]

Addr[10:5]

16KB

Addr[31:12]

Addr[11:5]

32KB

Addr[31:13]

Addr[12:5]

64KB

Addr[31:14]

Addr[13:5]

128KB

Addr[31:15]

Addr[14:5]

256KB

Addr[31:16]

Addr[15:5]

512KB

Addr[31:17]

Addr[16:5]

1MB

Addr[31:18]

Addr[17:5]

Copyright © 2000 ARM Limited. All rights reserved.ARM DDI 0155A
Non-Confidential