diff --git a/arch/arm/core/cortex_m/prep_c.c b/arch/arm/core/cortex_m/prep_c.c index 9bbbf76545e..a8c918ba5de 100644 --- a/arch/arm/core/cortex_m/prep_c.c +++ b/arch/arm/core/cortex_m/prep_c.c @@ -29,7 +29,8 @@ static inline void relocate_vector_table(void) { /* do nothing */ } static inline void relocate_vector_table(void) { /* vector table is located at the the beginning of the flash */ - _scs_relocate_vector_table((void *)CONFIG_FLASH_BASE_ADDRESS); + _scs_relocate_vector_table((void *)(CONFIG_FLASH_BASE_ADDRESS + + CONFIG_TEXT_SECTION_OFFSET)); } #else static inline void relocate_vector_table(void) diff --git a/include/arch/arm/cortex_m/scripts/linker.ld b/include/arch/arm/cortex_m/scripts/linker.ld index 781a92ea217..f97a8534a6e 100644 --- a/include/arch/arm/cortex_m/scripts/linker.ld +++ b/include/arch/arm/cortex_m/scripts/linker.ld @@ -72,6 +72,7 @@ SECTIONS SECTION_PROLOGUE(_TEXT_SECTION_NAME,,) { + . = CONFIG_TEXT_SECTION_OFFSET; KEEP(*(.exc_vector_table)) KEEP(*(".exc_vector_table.*"))