diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52832/device/TOOLCHAIN_GCC_ARM/NRF52832.ld b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52832/device/TOOLCHAIN_GCC_ARM/NRF52832.ld index 0fa07980fc..fd76160066 100644 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52832/device/TOOLCHAIN_GCC_ARM/NRF52832.ld +++ b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52832/device/TOOLCHAIN_GCC_ARM/NRF52832.ld @@ -199,13 +199,20 @@ SECTIONS __edata = .; + .nvictable (NOLOAD) : + { + PROVIDE(__start_nvictable = .); + KEEP(*(.nvictable)) + PROVIDE(__stop_nvictable = .); + } > RAM_NVIC + .noinit (NOLOAD) : { PROVIDE(__start_noinit = .); KEEP(*(.noinit)) PROVIDE(__stop_noinit = .); - } > RAM_NVIC - + } > RAM + .bss : { . = ALIGN(4); diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/device/TOOLCHAIN_GCC_ARM/NRF52840.ld b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/device/TOOLCHAIN_GCC_ARM/NRF52840.ld index 99b8a4e4dd..e42984a874 100644 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/device/TOOLCHAIN_GCC_ARM/NRF52840.ld +++ b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/device/TOOLCHAIN_GCC_ARM/NRF52840.ld @@ -198,12 +198,19 @@ SECTIONS __edata = .; + .nvictable (NOLOAD) : + { + PROVIDE(__start_nvictable = .); + KEEP(*(.nvictable)) + PROVIDE(__stop_nvictable = .); + } > RAM_NVIC + .noinit (NOLOAD) : { PROVIDE(__start_noinit = .); KEEP(*(.noinit)) PROVIDE(__stop_noinit = .); - } > RAM_NVIC + } > RAM .bss : { diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/reloc_vector_table.c b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/reloc_vector_table.c index 78bff812f0..53daa7e4ff 100644 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/reloc_vector_table.c +++ b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/reloc_vector_table.c @@ -46,13 +46,13 @@ #endif #if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) - __attribute__ ((section(".bss.noinit"),zero_init)) + __attribute__ ((section(".bss.nvictable"),zero_init)) uint32_t nrf_dispatch_vector[NVIC_NUM_VECTORS]; #elif defined(__GNUC__) - __attribute__ ((section(".noinit"))) + __attribute__ ((section(".nvictable"))) uint32_t nrf_dispatch_vector[NVIC_NUM_VECTORS]; #elif defined(__ICCARM__) - uint32_t nrf_dispatch_vector[NVIC_NUM_VECTORS] @ ".noinit"; + uint32_t nrf_dispatch_vector[NVIC_NUM_VECTORS] @ ".nvictable"; #endif extern uint32_t __Vectors[];