System Control Coprocessor
ARM DDI 0301H
Copyright © 2004-2009 ARM Limited. All rights reserved.
3-71
ID012310
Non-Confidential, Unrestricted Access
Figure 3-39 Cache operations with MCRR instructions
Note
•
Writing c7 with a combination of CRm and Opcode_2 not listed in Figure 3-38 on
page 3-70 or CRm not listed in Figure 3-39 results in an Undefined exception apart from
the following operations, that are architecturally defined as unified cache operations and
have no effect:
—
MCR p15,0,<Rd>,c7,c7,{1-7}
—
MCR p15,0,<Rd>,c7,c11,{0-7}
—
MCR p15,0,<Rd>,c7,c15,{0-7}
.
•
In the ARM1176JZF-S processor, reading from c7, except for reads from the Cache Dirty
Status Register or PA Register, causes an Undefined instruction trap.
•
Writes to the Cache Dirty Status Register cause an Undefined exception.
•
If Opcode_1 = 0, these instructions are applied to a level one cache system. All other
Opcode_1 values are reserved.
•
All accesses to c7 can only be executed in a privileged mode of operation, except Data
Synchronization Barrier, Flush Prefetch Buffer, Data Memory Barrier, and Clean Data
Cache Range. These can be operated in User mode. Attempting to execute a privileged
instruction in User mode results in the Undefined instruction trap being taken.
There are three ways to use c7:
•
For the Cache Dirty Status Register, read c7 with the MRC instruction.
•
For range operations use the MCRR instruction with the value of CRm to select the
required operation.
•
For all other operations use the MCR instruction to write to c7 with the combination of
CRm and Opcode_2 to select the required operation.
Depending on the operation you require set <Rd> for MCR instructions or <Rd> and
<Rn> for MCRR instructions to:
—
Virtual Address
(VA)
—
Modified Virtual Address
(MVA)
—
Set and Index
—
Should Be Zero.
Invalidate, Clean, and Prefetch operations
The purposes of the invalidate, clean, and prefetch operations that c7 provides are to:
•
Invalidate part or all of the Data or Instruction caches
•
Clean part or all of the Data cache
•
Clean and Invalidate part or all of the Data cache
Read-only
Read/write
VA
Using VA
c14
c5
c12
VA
0
Invalidate Instruction Cache Range
CRm
Opcode_1
c6
VA
VA
VA
Invalidate Data Cache Range
Clean Data Cache Range
Clean and Invalidate Data Cache Range
Accessible in User mode