Ignore:
Timestamp:
10/16/20 04:34:39 (3 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
5
Children:
7021c014
Parents:
3d7da435
git-author:
Sebastian Huber <sebastian.huber@…> (10/16/20 04:34:39)
git-committer:
Sebastian Huber <sebastian.huber@…> (10/16/20 04:41:32)
Message:

bsps/arm: Add workaround for Errata 794072

Add a workaround for Cortex-A9 Errata 845369: A short loop including a DMB
instruction might cause a denial of service on another which executes a CP15
broadcast operation.

Close #4114.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • bsps/arm/include/bsp/arm-a9mpcore-start.h

    r3d7da435 re71e271  
    126126
    127127BSP_START_TEXT_SECTION static inline void
     128arm_a9mpcore_start_errata_794072_handler(void)
     129{
     130  uint32_t diag;
     131
     132  /*
     133   * Workaround for Errata 794072: A short loop including a DMB instruction
     134   * might cause a denial of service on another which executes a CP15 broadcast
     135   * operation.
     136   */
     137  diag = arm_cp15_get_diagnostic_control();
     138  diag |= 1U << 4;
     139  arm_cp15_set_diagnostic_control(diag);
     140}
     141
     142BSP_START_TEXT_SECTION static inline void
    128143arm_a9mpcore_start_errata_845369_handler(void)
    129144{
     
    153168
    154169#ifdef RTEMS_SMP
     170  arm_a9mpcore_start_errata_794072_handler();
    155171  arm_a9mpcore_start_errata_845369_handler();
    156172  arm_a9mpcore_start_enable_smp_in_auxiliary_control();
Note: See TracChangeset for help on using the changeset viewer.