summaryrefslogtreecommitdiffstats
path: root/bsps
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2020-10-02 11:36:20 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-10-16 06:36:06 +0200
commite7b878e42f0c358379206c025059feccd711804e (patch)
tree4ae6f341a04613cac534c8a098122fdfc3848008 /bsps
parentRevert "rtems-fdt / shell - Fix string truncation warning" (diff)
downloadrtems-e7b878e42f0c358379206c025059feccd711804e.tar.bz2
bsps/arm: Workaround for Errata 845369
Add a workaround for Cortex-A9 Errata 845369: Under Very Rare Timing Circumstances Transition into Streaming Mode Might Create Data Corruption. Update #4115.
Diffstat (limited to 'bsps')
-rw-r--r--bsps/arm/include/bsp/arm-a9mpcore-start.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/bsps/arm/include/bsp/arm-a9mpcore-start.h b/bsps/arm/include/bsp/arm-a9mpcore-start.h
index a03bc8fb33..8f9da486b5 100644
--- a/bsps/arm/include/bsp/arm-a9mpcore-start.h
+++ b/bsps/arm/include/bsp/arm-a9mpcore-start.h
@@ -123,6 +123,20 @@ arm_a9mpcore_start_enable_smp_in_auxiliary_control(void)
actlr |= ARM_CORTEX_A9_ACTL_SMP | ARM_CORTEX_A9_ACTL_FW;
arm_cp15_set_auxiliary_control(actlr);
}
+
+BSP_START_TEXT_SECTION static inline void
+arm_a9mpcore_start_errata_845369_handler(void)
+{
+ uint32_t diag;
+
+ /*
+ * Workaround for Errata 845369: Under Very Rare Timing Circumstances
+ * Transition into Streaming Mode Might Create Data Corruption.
+ */
+ diag = arm_cp15_get_diagnostic_control();
+ diag |= 1U << 22;
+ arm_cp15_set_diagnostic_control(diag);
+}
#endif
BSP_START_TEXT_SECTION static inline void arm_a9mpcore_start_hook_0(void)
@@ -138,6 +152,7 @@ BSP_START_TEXT_SECTION static inline void arm_a9mpcore_start_hook_0(void)
}
#ifdef RTEMS_SMP
+ arm_a9mpcore_start_errata_845369_handler();
arm_a9mpcore_start_enable_smp_in_auxiliary_control();
#endif