
Cortex-M4 Peripherals
ARM DUI 0553A
Copyright © 2010 ARM. All rights reserved.
4-25
ID121610
Non-Confidential
MemManage Fault Status Register
The flags in the MMFSR indicate the cause of memory access faults. The bit assignments are:
MMARVALID
Reserved
MSTKERR
MUNSTKERR
7 6 5 4 3 2 1 0
IACCVIOL
DACCVIOL
Reserved
MLSPERR
Table 4-25 MMFSR bit assignments
Bits
Name
Function
[7]
MMARVALID
MemManage Fault Address Register
(MMFAR) valid flag:
0 = value in MMAR is not a valid fault address
1 = MMAR holds a valid fault address.
If a MemManage fault occurs and is escalated to a HardFault because of priority, the HardFault
handler must set this bit to 0. This prevents problems on return to a stacked active MemManage
fault handler whose MMAR value has been overwritten.
[6]
-
Reserved.
[5]
MLSPERR
a
0 = no MemManage fault occurred during floating-point lazy state preservation
1 = a MemManage fault occurred during floating-point lazy state preservation.
[4]
MSTKERR
MemManage fault on stacking for exception entry:
0 = no stacking fault
1 = stacking for an exception entry has caused one or more access violations.
When this bit is 1, the SP is still adjusted but the values in the context area on the stack might
be incorrect. The processor has not written a fault address to the MMAR.
[3]
MUNSTKERR
MemManage fault on unstacking for a return from exception:
0 = no unstacking fault
1 = unstack for an exception return has caused one or more access violations.
This fault is chained to the handler. This means that when this bit is 1, the original return stack
is still present. The processor has not adjusted the SP from the failing return, and has not
performed a new save. The processor has not written a fault address to the MMAR.
[2]
-
Reserved.
[1]
DACCVIOL
Data access violation flag:
0 = no data access violation fault
1 = the processor attempted a load or store at a location that does not permit the operation.
When this bit is 1, the PC value stacked for the exception return points to the faulting
instruction. The processor has loaded the MMAR with the address of the attempted access.
[0]
IACCVIOL
Instruction access violation flag:
0 = no instruction access violation fault
1 = the processor attempted an instruction fetch from a location that does not permit execution.
This fault occurs on any access to an XN region, even when the MPU is disabled or not present.
When this bit is 1, the PC value stacked for the exception return points to the faulting
instruction. The processor has not written a fault address to the MMAR.
a. Only present in a Cortex-M4F device.