2.7.2.13 UsageFault Status Register

The UFSR indicates the cause of a UsageFault. The bit assignments are:
Figure 2-39. UFSR Bit Assignments
Table 2-60. UFSR Bit Assignments
Bits Name Function
[15:10] Reserved.
[9] DIVBYZERO Divide by zero UsageFault:

0: no divide by zero fault, or divide by zero trapping not enabled

1: the processor has executed an SDIV or UDIV instruction with a divisor of 0.

When the processor sets this bit to 1, the PC value stacked for the exception return points to the instruction that performed the divide by zero.

Enable trapping of divide by zero by setting the DIV_0_TRP bit in the CCR to 1, see 2.7.2.7 Configuration and Control Register.

[8] UNALIGNED Unaligned access UsageFault:

0: no unaligned access fault, or unaligned access trapping not enabled

1: the processor has made an unaligned memory access.

Enable trapping of unaligned accesses by setting the UNALIGN_TRP bit in the CCR to 1, see 2.7.2.7 Configuration and Control Register.

Unaligned LDM, STM, LDRD, and STRD instructions always fault irrespective of the setting of UNALIGN_TRP.

[7:4] Reserved.
[3] NOCP No coprocessor UsageFault. The processor does not support coprocessor instructions:

0: no UsageFault caused by attempting to access a coprocessor

1: the processor has attempted to access a coprocessor.

[2] INVPC Invalid PC load UsageFault, caused by an invalid PC load by EXC_RETURN:

0: no invalid PC load UsageFault

1: the processor has attempted an illegal load of EXC_RETURN to the PC, as a result of an invalid context, or an invalid EXC_RETURN value.

When this bit is set to 1, the PC value stacked for the exception return points to the instruction that tried to perform the illegal load of the PC.

[1] INVSTATE Invalid state UsageFault:

0: no invalid state UsageFault

1: the processor has attempted to execute an instruction that makes illegal use of the EPSR.

When this bit is set to 1, the PC value stacked for the exception return points to the instruction that attempted the illegal use of the EPSR.

This bit is not set to 1 if an undefined instruction uses the EPSR.

[0] UNDEFINSTR Undefined instruction UsageFault:

0: no undefined instruction UsageFault

1: the processor has attempted to execute an undefined instruction.

When this bit is set to 1, the PC value stacked for the exception return points to the undefined instruction.

An undefined instruction is an instruction that the processor cannot decode.

The UFSR bits are sticky. This means as one or more fault occurs, the associated bits are set to 1. A bit that is set to 1 is cleared to 0 only by writing 1 to that bit, or by a reset.