Developer’s Manual March, 2003 7-1
Configuration
7
This chapter describes the System Control Coprocessor (CP15) and coprocessor 14 (CP14). CP15
configures the MMU, caches, buffers and other system attributes. Where possible, the definition of
CP15 follows the definition in the first generation Intel
®
StrongARM* products. CP14 contains the
performance monitor registers and the trace buffer registers.
7.1 Overview
CP15 is accessed through MRC and MCR coprocessor instructions and allowed only in privileged
mode. Any access to CP15 in user mode or with LDC or STC coprocessor instructions causes an
undefined instruction exception.
CP14 registers can be accessed through MRC, MCR, LDC, and STC coprocessor instructions and
allowed only in privileged mode. Any access to CP14 in user mode causes an undefined instruction
exception.
Coprocessors on the Intel
®
80200 processor based on Intel
®
XScale
™
microarchitecture
(compliant with the ARM* Architecture V5TE) do not support access via CDP, MRRC, or
MCRR instructions. An attempt to execute these instructions results in an Undefined Instruction
exception.
Many of the MCR commands available in CP15 modify hardware state sometime after execution.
A software sequence is available for those wishing to determine when this update occurs and can
be found in Section 2.3.3, “Additions to CP15 Functionality” on page 2-11.
Like certain other ARM* architecture products, the Intel
®
80200 processor includes an extra level
of virtual address translation in the form of a PID (Process ID) register and associated logic. For a
detailed description of this facility, see Section 7.2.13, “Register 13: Process ID” on page 7-16.
Privileged code needs to be aware of this facility because, when interacting with CP15, some
addresses are modified by the PID and others are not.
An address that has yet to be modified by the PID (“PIDified”) is known as a virtual address (VA).
An address that has been through the PID logic, but not translated into a physical address, is a
modified virtual address (MVA). Non-privileged code always deals with VAs, while privileged
code that programs CP15 occasionally needs to use MVAs.