--- a/include/zephyr/arch/arm/cortex_m/scripts/linker.ld
+++ b/include/zephyr/arch/arm/cortex_m/scripts/linker.ld
@@ -87,6 +87,9 @@ MEMORY
#endif
FLASH (rx) : ORIGIN = ROM_ADDR, LENGTH = ROM_SIZE
RAM (wx) : ORIGIN = RAM_ADDR, LENGTH = RAM_SIZE
+#if defined(CONFIG_SDRAM_LMA_ADJUST)
+ NXP_FLASH_LMA (rx) : ORIGIN = 0x60000000, LENGTH = 4M
+#endif
#if defined(CONFIG_LINKER_DEVNULL_MEMORY)
DEVNULL_ROM (rx) : ORIGIN = DEVNULL_ADDR, LENGTH = DEVNULL_SIZE
#endif
@@ -124,7 +127,10 @@ SECTIONS
__rom_region_start = ROM_ADDR;
- SECTION_PROLOGUE(rom_start,,)
+ SECTION_PROLOGUE(rom_start,,)
+#if defined(CONFIG_SDRAM_LMA_ADJUST)
+ ALIGN_WITH_INPUT
+#endif
{
/* Located in generated directory. This file is populated by calling
@@ -132,16 +138,21 @@ SECTIONS
* table and debug information.
*/
#include <snippets-rom-start.ld>
-
+#if !defined(CONFIG_SDRAM_LMA_ADJUST)
} GROUP_LINK_IN(ROMSTART_REGION)
-
+#else
+ } > FLASH AT> NXP_FLASH_LMA
+#endif
#ifdef CONFIG_CODE_DATA_RELOCATION
#include <linker_relocate.ld>
#endif /* CONFIG_CODE_DATA_RELOCATION */
- SECTION_PROLOGUE(_TEXT_SECTION_NAME,,)
+ SECTION_PROLOGUE(_TEXT_SECTION_NAME,,)
+#if defined(CONFIG_SDRAM_LMA_ADJUST)
+ ALIGN_WITH_INPUT
+#endif
{
__text_region_start = .;
@@ -158,8 +169,11 @@ SECTIONS
*/
*(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
. = ALIGN(4);
-
+#if !defined(CONFIG_SDRAM_LMA_ADJUST)
} GROUP_LINK_IN(ROMABLE_REGION)
+#else
+ } > FLASH AT> NXP_FLASH_LMA
+#endif
__text_region_end = .;
@@ -174,6 +188,9 @@ SECTIONS
#endif
SECTION_PROLOGUE(.ARM.exidx,,)
+#if defined(CONFIG_SDRAM_LMA_ADJUST)
+ ALIGN_WITH_INPUT
+#endif
{
/*
* This section, related to stack and exception unwinding, is placed
@@ -186,8 +203,11 @@ SECTIONS
*(.ARM.exidx* gnu.linkonce.armexidx.*)
#endif
__exidx_end = .;
+#if !defined(CONFIG_SDRAM_LMA_ADJUST)
} GROUP_LINK_IN(ROMABLE_REGION)
-
+#else
+ } > FLASH AT> NXP_FLASH_LMA
+#endif