Datasheet

144
11011B–ATARM–21-Feb-12
SAM3N
10.18.7 MSR
Move the contents of a general-purpose register into the specified special register.
10.18.7.1 Syntax
MSR{cond} spec_reg, Rn
where:
cond is an optional condition code, see “Conditional execution” on page 84.
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.
10.18.7.2 Operation
The register access operation in MSR depends on the privilege level. Unprivileged software can
only access the APSR, see “Application Program Status Register” on page 47. Privileged soft-
ware can access all special registers.
In unprivileged software writes to unallocated or execution state bits in the PSR are ignored.
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” on page 143.
10.18.7.3 Restrictions
Rn must not be SP and must not be PC.
10.18.7.4 Condition flags
This instruction updates the flags explicitly based on the value in Rn.
10.18.7.5 Examples
MSR CONTROL, R1 ; Read R1 value and write it to the CONTROL register