The Control Modules can generate the
access error interrupts MMR_ACCESS_ERR_WR and MMR_ACCESS_ERR_RD. The interrupts are
asserted when one or more of the following accesses are made:
- (a) write access when MMR are
locked
- (b) access to illegal address
in the control module
The following registers are related to
handling of these errors inside the respective Control Module.
- <Control
Module>INTR_RAW_STATUS - Interrupt Raw Status/Set register
- <Control
Module>INTR_ENABLED_STATUS_CLEAR - Interrupt Enabled Status/Clear
register
- <Control
Module>INTR_ENABLE - Interrupt Enable register
- <Control
Module>INTR_ENABLE_CLEAR - Interrupt Enable Clear register
The following applies for the
interrupt behavior of each Control Module:
- The Control Module only
asserts the interrupt line if the interrupt is enabled.
- Interrupts are
enabled by setting the corresponding bits in the
INTR_ENABLE register to 1h.
- Interrupts are
disabled by setting the corresponding bits in the
INTR_ENABLE_CLEAR register to 1h.
- After an interrupt has been
serviced, software must clear the corresponding status flag. This is done by
setting to 1h the corresponding bit in the INTR_ENABLED_STATUS_CLEAR
register which also clears the corresponding bit in the INTR_RAW_STATUS
register. The status flags in the INTR_RAW_STATUS register are set even if
the corresponding interrupt is disabled. The INTR_ENABLED_STATUS_CLEAR
register is only set if the corresponding interrupt is enabled.
- An interrupt is generated by
the control module if the relevant bit in the INTR_RAW_STATUS register is
set to 1h and the interrupt is enabled through the INTR_ENABLE register.
This feature is useful during user software debugging. In addition, even if
interrupts are disabled, the corresponding raw flag in the INTR_RAW_STATUS
register is set to 1h when an interrupt condition occurs.
- If interrupts are disabled,
the corresponding raw flag in the INTR_RAW_STATUS register is set to 1h when
an interrupt condition occurs. The INTR_RAW_STATUS can be cleared by setting
the corresponding bit in the INTR_RAW_STATUS register to 1h.
The MSS_CTRL module aggregates the
Control Module interrupts MMR_ACCESS_ERR_WR and MMR_ACCESS_ERR_RD and generates
MMR_ACCESS_ERRAGGR to the R5 Cores (see Section 6.1.3.2.7).
Note: CONTROLSS_GLOBAL_CTRL is not
aggregated into MSS_CTRL's MMR_ACCESS_ERR_WR and MMR_ACCESS_ERR_RD
Table 6-2 lists the
interrupt events which can assert the MSS_CTRL Access Error.
Table 6-2 MSS_CTRL Access Error
Interrupt Events
| Event Name |
Event Flag |
Event Mask |
Description |
| MMR_ACCESS_ERR_WR |
INTR_RAW_STATUS.KICK_ERR |
INTR_ENABLE.KICK_ERR_EN |
Lock violation interrupt. Occurs when writing to a register
in a locked control module. |
| MMR_ACCESS_ERR_RD |
INTR_RAW_STATUS.ADDR_ERR |
INTR_ENABLE.ADDR_ERR_EN |
Read addressing violation interrupt. Occurs when reading an
illegal address inside the control module. |
| MMR_ACCESS_ERR_WR |
INTR_RAW_STATUS.ADDR_ERR |
INTR_ENABLE.ADDR_ERR_EN |
Write addressing violation interrupt. Occurs when writing an
illegal address inside the control module. |
When an error event as described in
Table 6-2 above occurs, the associated error details are captured in the FAULT_ADDRESS,
FAULT_TYPE_STATUS, and FAULT_ATTR_STATUS registers.
FAULT_ADDRESS contains the address of
the first fault access. FAULT_TYPE_STATUS and FAULT_ATTR_STATUS contain status
attributes associated with the first fault access. To clear the contents of these
three registers and allow them to latch the attributes of the next fault the
FAULT_CLEAR.FAULT_CLR bit must be set to 1h.