Changeset bba83e5 in rtems


Ignore:
Timestamp:
07/11/14 14:09:41 (9 years ago)
Author:
Daniel Cederman <cederman@…>
Branches:
4.11, 5, master
Children:
62f373fb
Parents:
54f3476e
git-author:
Daniel Cederman <cederman@…> (07/11/14 14:09:41)
git-committer:
Daniel Hellstrom <daniel@…> (08/22/14 11:10:59)
Message:

score/sparc: Add comment on icache flush after trap table update

Changes to the trap table might be missed by other cores.
If the system state is up, the other cores can be notified
using SMP messages that they need to flush their icache.
If the up state has not been reached there is no need to
notify other cores. They will do an automatic flush of the
icache just after entering the up state, but before enabling
interrupts. Cache invalidation is required for both single
and multiprocessor systems.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpukit/score/cpu/sparc/cpu.c

    r54f3476e rbba83e5  
    211211  slot->jmp_to_low_of_handler_plus_l4 |= (u32_handler & LOW_BITS_MASK);
    212212
    213   /* need to flush icache after this !!! */
    214 
     213  /*
     214   * There is no instruction cache snooping, so we need to invalidate
     215   * the instruction cache to make sure that the processor sees the
     216   * changes to the trap table. This step is required on both single-
     217   * and multiprocessor systems.
     218   *
     219   * In a SMP configuration a change to the trap table might be
     220   * missed by other cores. If the system state is up, the other
     221   * cores can be notified using SMP messages that they need to
     222   * flush their icache. If the up state has not been reached
     223   * there is no need to notify other cores. They will do an
     224   * automatic flush of the icache just after entering the up
     225   * state, but before enabling interrupts.
     226   */
    215227  rtems_cache_invalidate_entire_instruction();
    216 
    217228}
    218229
Note: See TracChangeset for help on using the changeset viewer.