summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/lpc32xx/irq/irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/arm/lpc32xx/irq/irq.c')
-rw-r--r--c/src/lib/libbsp/arm/lpc32xx/irq/irq.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/c/src/lib/libbsp/arm/lpc32xx/irq/irq.c b/c/src/lib/libbsp/arm/lpc32xx/irq/irq.c
index 9a569c4a76..4ea1c1cc1c 100644
--- a/c/src/lib/libbsp/arm/lpc32xx/irq/irq.c
+++ b/c/src/lib/libbsp/arm/lpc32xx/irq/irq.c
@@ -308,12 +308,18 @@ void lpc32xx_set_exception_handler(
)
{
if ((unsigned) exception < MAX_EXCEPTIONS) {
- uint32_t *table = (uint32_t *) bsp_section_vector_begin + MAX_EXCEPTIONS;
+ #ifndef LPC32XX_DISABLE_MMU
+ uint32_t *table = (uint32_t *) bsp_section_vector_begin + MAX_EXCEPTIONS;
+ #else
+ uint32_t *table = (uint32_t *) bsp_section_start_begin + MAX_EXCEPTIONS;
+ #endif
table [exception] = (uint32_t) handler;
- rtems_cache_flush_multiple_data_lines(NULL, 64);
- rtems_cache_invalidate_multiple_data_lines(NULL, 64);
+ #ifndef LPC32XX_DISABLE_MMU
+ rtems_cache_flush_multiple_data_lines(table, 64);
+ rtems_cache_invalidate_multiple_instruction_lines(NULL, 64);
+ #endif
}
}