diff options
Diffstat (limited to 'c/src/lib/libbsp/arm/lpc32xx/irq/irq.c')
-rw-r--r-- | c/src/lib/libbsp/arm/lpc32xx/irq/irq.c | 12 |
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 } } |