3.10.7. MSR

Move the contents of a general-purpose register into the specified special register.

Syntax

MSR{cond} spec_reg, Rn

where:

cond

Is an optional condition code, see Conditional execution.

Rn

Specifies 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.

Note

The processor ignores MSR writes to the EPSR and IPSR fields.

Operation

The register access operation in MSR depends on the privilege level. Unprivileged software can only access the APSR, see Table 2.4. 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 MRS.

Restrictions

Rn must not be SP and must not be PC.

Condition flags

This instruction updates the flags explicitly based on the value in Rn.

Examples

MSR  CONTROL, R1 ; Read R1 value and write it to the CONTROL register. 

Copyright © 2010 ARM. All rights reserved.ARM DUI 0552A
Non-ConfidentialID121610