diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-10-02 11:36:20 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-10-16 06:41:27 +0200 |
commit | 3d7da43562d83faf93f9a3827408d2a13a3658d3 (patch) | |
tree | 03b3c1ccd4b7c3af91978052b0ffcd0c6c952df3 /bsps | |
parent | i386/score: fix assembly mnemonic (diff) | |
download | rtems-3d7da43562d83faf93f9a3827408d2a13a3658d3.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 #4114.
Diffstat (limited to 'bsps')
-rw-r--r-- | bsps/arm/include/bsp/arm-a9mpcore-start.h | 15 |
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 8423e64e9d..83c84f1c72 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 |