9.2.3. Accessing the MPU using the alias registers

You can optimize the loading speed of the MPU registers using register aliasing. There are three sets of Nested Vectored Interrupt Controller (NVIC) alias registers. These are described in NVIC register descriptions.

The aliases access the registers in exactly the same way, and they exist to enable the use of sequential writes (STM) to update between one and four regions. This is used when disable/change/enable is not required.

You cannot use these aliases to read the contents of the regions because the region number must be written.

An example code sequence for updating four regions is

; R1 = 4 region pairs from process control block (8 words)
MOV	R0, #NVIC_BASE
ADD	R0, #MPU_REG_CTRL
LDM	R1, [R2-R9] ; load region information for 4 regions
STM	R0, [R2-R9] ; update all 4 regions at once

Note

You can normally use the memcpy() function in a C/C++ compiler for this sequence. However, you must verify that the compiler uses word transfers.

Copyright © 2005, 2006 ARM Limited. All rights reserved.ARM DDI 0337E
Non-Confidential