diff options
Diffstat (limited to 'c/src/lib/libbsp/arm/shared/arm-cp15-set-exception-handler.c')
-rw-r--r-- | c/src/lib/libbsp/arm/shared/arm-cp15-set-exception-handler.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/arm/shared/arm-cp15-set-exception-handler.c b/c/src/lib/libbsp/arm/shared/arm-cp15-set-exception-handler.c index 01db6d8cf3..6497acae67 100644 --- a/c/src/lib/libbsp/arm/shared/arm-cp15-set-exception-handler.c +++ b/c/src/lib/libbsp/arm/shared/arm-cp15-set-exception-handler.c @@ -37,7 +37,15 @@ void arm_cp15_set_exception_handler( ctrl = arm_cp15_mmu_disable(cls); mirror_table[exception] = (uint32_t) handler; + rtems_cache_flush_multiple_data_lines(mirror_table, table_size); + + /* + * On ARMv7 processors with the Security Extension the mirror table might + * be the actual table used by the processor. + */ + rtems_cache_invalidate_multiple_instruction_lines(mirror_table, table_size); + rtems_cache_invalidate_multiple_instruction_lines(cpu_table, table_size); arm_cp15_set_control(ctrl); |