UM10360 All information provided in this document is subject to legal disclaimers. © NXP B.V. 2013. All rights reserved.
User manual Rev. 3 — 20 December 2013  722 of 841
NXP Semiconductors
UM10360
Chapter 34: Appendix: Cortex-M3 user guide
34.2.10.7 MSR
Move the contents of a general-purpose register into the specified special register.
34.2.10.7.1 Syntax
MSR
{cond} spec_reg, Rn
where:
cond is an optional condition code, see Section 34.2.3.7 “
Conditional execution”.
Rn is the source register.
spec_reg can be any of: 
APSR
, 
IPSR
, 
EPSR
, 
IEPSR
, 
IAPSR
, 
EAPSR
, 
PSR
, 
MSP
, 
PSP
, 
PRIMASK
, 
BASEPRI
, 
BASEPRI_MAX
, 
FAULTMASK
, or 
CONTROL
.
34.2.10.7.2 Operation
The register access operation in 
MSR
 depends on the privilege level. Unprivileged software 
can only access the 
APSR
, see Table 628 “APSR bit assignments”. Privileged software can 
access all special registers.
In unprivileged software writes to unallocated or execution state bits in the 
PSR
 are 
ignored.
Note
When you write to 
BASEPRI_MAX
, the instruction writes to 
BASEPRI
 only if either:
• Rn is non-zero and the current 
BASEPRI
 value is 0
• Rn is non-zero and less than the current 
BASEPRI
 value.
See Section 34.2.10.6
.
34.2.10.7.3 Restrictions
Rn must not be SP and must not be PC.
34.2.10.7.4 Condition flags
This instruction updates the flags explicitly based on the value in Rn.
34.2.10.7.5 Examples
MSR CONTROL, R1 ; Read R1 value and write it to the CONTROL register