summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--c/src/lib/libbsp/arm/shared/arm-cp15-set-exception-handler.c8
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);