espressif: esp32xx: adjust memory map on linker script

Reorganize memory mapping and document the address ranges that
the OS must avoid overlapping.

Signed-off-by: Almir Okato <almir.okato@espressif.com>
diff --git a/boot/espressif/CMakeLists.txt b/boot/espressif/CMakeLists.txt
index 3c732db..bc7868f 100644
--- a/boot/espressif/CMakeLists.txt
+++ b/boot/espressif/CMakeLists.txt
@@ -308,10 +308,28 @@
     ${bootutil_paths}
     )
 
+set(ld_input ${CMAKE_CURRENT_LIST_DIR}/port/${MCUBOOT_TARGET}/ld/bootloader.ld)
+set(ld_output ${CMAKE_CURRENT_BINARY_DIR}/ld/bootloader.ld)
+
+file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/ld")
+
+get_directory_property(configs COMPILE_DEFINITIONS)
+foreach(c ${configs})
+    list(APPEND conf_defines "-D${c}")
+endforeach()
+
+# Preprocess linker script
+add_custom_command(
+    TARGET ${APP_EXECUTABLE} PRE_LINK
+    COMMAND ${CMAKE_C_COMPILER} -x c -E -P -o ${ld_output} ${conf_defines} ${ld_input}
+    MAIN_DEPENDENCY ${ld_input}
+    COMMENT "Preprocessing bootloader.ld linker script..."
+    )
+
 target_link_libraries(
     ${APP_EXECUTABLE}
     PUBLIC
-    -T${CMAKE_CURRENT_LIST_DIR}/port/${MCUBOOT_TARGET}/ld/bootloader.ld
+    -T${ld_output}
     ${LDFLAGS}
     )
 
diff --git a/boot/espressif/port/esp32/ld/bootloader.ld b/boot/espressif/port/esp32/ld/bootloader.ld
index 48b6ff5..5ceac18 100644
--- a/boot/espressif/port/esp32/ld/bootloader.ld
+++ b/boot/espressif/port/esp32/ld/bootloader.ld
@@ -12,9 +12,14 @@
 
 MEMORY
 {
-  iram_seg (RWX) :                  org = 0x40093000, len = 0x7A00
-  iram_loader_seg (RWX) :           org = 0x4009AA00, len = 0x5600
-  dram_seg (RW) :                   org = 0x3FFF5000, len = 0x9900
+#ifdef CONFIG_ESP_MULTI_PROCESSOR_BOOT
+  iram_loader_seg (RWX) :           org = 0x400AB900, len = 0x6500
+#else
+  /* iram_loader_seg is currently placed on APP_CPU cache IRAM address range */
+  iram_loader_seg (RWX) :           org = 0x40078000, len = 0x6500
+#endif
+  iram_seg (RWX) :                  org = 0x40090000, len = 0x9000
+  dram_seg (RW) :                   org = 0x3FFF4700, len = 0xB900
 }
 
 /*  Default entry point:  */
@@ -28,42 +33,10 @@
     _loader_text_start = ABSOLUTE(.);
     *(.stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
     *(.iram1 .iram1.*) /* catch stray IRAM_ATTR */
-    *libhal.a:bootloader_flash.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_flash_config_esp32.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_clock_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_init.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_common.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_common_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_random.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_random*.*(.literal.bootloader_random_disable .text.bootloader_random_disable)
-    *libhal.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable)
-    *libhal.a:bootloader_efuse.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_utility.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_sha.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_console.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_console_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_panic.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_soc.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_image_format.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_encrypt.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_encryption_secure_features.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_partitions.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot_secure_features.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot_signatures_bootloader.*(.literal .text .literal.* .text.*)
-    *libhal.a:mmu_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:wdt_hal_iram.*(.literal .text .literal.* .text.*)
-    *libhal.a:efuse_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_table.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_fields.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_api.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_utility.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_api_key.*(.literal .text .literal.* .text.*)
-    *libhal.a:rtc_clk.*(.literal .text .literal.* .text.*)
-    *libhal.a:rtc_time.*(.literal .text .literal.* .text.*)
-    *libhal.a:app_cpu_start.*(.literal .text .literal.* .text.*)
+    *libhal.a:*.*(.literal .text .literal.* .text.*)
     *esp_mcuboot.*(.literal .text .literal.* .text.*)
     *esp_loader.*(.literal .text .literal.* .text.*)
+    *main.*(.literal .text .literal.* .text.*)
     *(.fini.literal)
     *(.fini)
     *(.gnu.version)
diff --git a/boot/espressif/port/esp32c2/ld/bootloader.ld b/boot/espressif/port/esp32c2/ld/bootloader.ld
index bb9479f..b24fabb 100644
--- a/boot/espressif/port/esp32c2/ld/bootloader.ld
+++ b/boot/espressif/port/esp32c2/ld/bootloader.ld
@@ -26,9 +26,9 @@
 /* These lengths can be adjusted, if necessary: */
 bootloader_usable_dram_end = 0x3fcdcb70;
 bootloader_stack_overhead = 0x2000; /* For safety margin between bootloader data section and startup stacks */
-bootloader_dram_seg_len = 0x5000;
+bootloader_dram_seg_len = 0xA000;
 bootloader_iram_loader_seg_len = 0x7000;
-bootloader_iram_seg_len = 0x3000;
+bootloader_iram_seg_len = 0x8800;
 
 /* Start of the lower region is determined by region size and the end of the higher region */
 bootloader_dram_seg_end = bootloader_usable_dram_end - bootloader_stack_overhead;
@@ -49,7 +49,7 @@
  * 2. Update the value in this assert.
  * 3. Update (SRAM_DRAM_END + I_D_SRAM_OFFSET) in components/esp_system/ld/esp32c2/memory.ld.in to the same value.
  */
-ASSERT(bootloader_iram_loader_seg_start == 0x403aeb70, "bootloader_iram_loader_seg_start inconsistent with SRAM_DRAM_END");
+ASSERT(bootloader_iram_loader_seg_start == 0x403a9b70, "bootloader_iram_loader_seg_start inconsistent with SRAM_DRAM_END");
 
 /*  Default entry point:  */
 ENTRY(main);
@@ -62,43 +62,10 @@
     _loader_text_start = ABSOLUTE(.);
     *(.stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
     *(.iram1 .iram1.*) /* catch stray IRAM_ATTR */
-    *libhal.a:bootloader_flash.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_flash_config_esp32c2.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_clock_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_init.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_common.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_common_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_random.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_random*.*(.literal.bootloader_random_disable .text.bootloader_random_disable)
-    *libhal.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable)
-    *libhal.a:bootloader_efuse.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_utility.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_sha.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_console.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_console_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_panic.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_soc.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_image_format.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_encrypt.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_encryption_secure_features.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_partitions.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot_secure_features.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot_signatures_bootloader.*(.literal .text .literal.* .text.*)
-    *libhal.a:wdt_hal_iram.*(.literal .text .literal.* .text.*)
-    *libhal.a:mmu_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:cache_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:efuse_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_table.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_fields.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_api.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_utility.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_api_key.*(.literal .text .literal.* .text.*)
-    *libhal.a:rtc_clk.*(.literal .text .literal.* .text.*)
-    *libhal.a:rtc_time.*(.literal .text .literal.* .text.*)
-    *libhal.a:regi2c_ctrl.*(.literal .text .literal.* .text.*)
+    *libhal.a:*.*(.literal .text .literal.* .text.*)
     *esp_mcuboot.*(.literal .text .literal.* .text.*)
     *esp_loader.*(.literal .text .literal.* .text.*)
+    *main.*(.literal .text .literal.* .text.*)
     *(.fini.literal)
     *(.fini)
     *(.gnu.version)
diff --git a/boot/espressif/port/esp32c3/ld/bootloader.ld b/boot/espressif/port/esp32c3/ld/bootloader.ld
index 304e79f..65f15cc 100644
--- a/boot/espressif/port/esp32c3/ld/bootloader.ld
+++ b/boot/espressif/port/esp32c3/ld/bootloader.ld
@@ -12,9 +12,9 @@
 
 MEMORY
 {
-  iram_seg (RWX) :                  org = 0x403C8000, len = 0x8000
+  iram_seg (RWX) :                  org = 0x403C7000, len = 0x9000
   iram_loader_seg (RWX) :           org = 0x403D0000, len = 0x5000
-  dram_seg (RW) :                   org = 0x3FCD5000, len = 0x9000
+  dram_seg (RW) :                   org = 0x3FCD5000, len = 0xA000
 }
 
 /*  Default entry point:  */
@@ -28,43 +28,10 @@
     _loader_text_start = ABSOLUTE(.);
     *(.stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
     *(.iram1 .iram1.*) /* catch stray IRAM_ATTR */
-    *libhal.a:bootloader_flash.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_flash_config_esp32c3.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_clock_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_init.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_common.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_common_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_random.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_random*.*(.literal.bootloader_random_disable .text.bootloader_random_disable)
-    *libhal.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable)
-    *libhal.a:bootloader_efuse.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_utility.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_sha.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_console.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_console_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_panic.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_soc.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_image_format.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_encrypt.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_encryption_secure_features.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_partitions.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot_secure_features.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot_signatures_bootloader.*(.literal .text .literal.* .text.*)
-    *libhal.a:wdt_hal_iram.*(.literal .text .literal.* .text.*)
-    *libhal.a:mmu_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:cache_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:efuse_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_table.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_fields.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_api.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_utility.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_api_key.*(.literal .text .literal.* .text.*)
-    *libhal.a:rtc_clk.*(.literal .text .literal.* .text.*)
-    *libhal.a:rtc_time.*(.literal .text .literal.* .text.*)
-    *libhal.a:regi2c_ctrl.*(.literal .text .literal.* .text.*)
+    *libhal.a:*.*(.literal .text .literal.* .text.*)
     *esp_mcuboot.*(.literal .text .literal.* .text.*)
     *esp_loader.*(.literal .text .literal.* .text.*)
+    *main.*(.literal .text .literal.* .text.*)
     *(.fini.literal)
     *(.fini)
     *(.gnu.version)
diff --git a/boot/espressif/port/esp32c6/ld/bootloader.ld b/boot/espressif/port/esp32c6/ld/bootloader.ld
index 2f2cb5f..06b6e91 100644
--- a/boot/espressif/port/esp32c6/ld/bootloader.ld
+++ b/boot/espressif/port/esp32c6/ld/bootloader.ld
@@ -23,9 +23,9 @@
 /* These lengths can be adjusted, if necessary: */
 bootloader_usable_dram_end = 0x4087c610;
 bootloader_stack_overhead = 0x2000; /* For safety margin between bootloader data section and startup stacks */
-bootloader_dram_seg_len = 0x5000;
+bootloader_dram_seg_len = 0xA000;
 bootloader_iram_loader_seg_len = 0x7000;
-bootloader_iram_seg_len = 0x3000;
+bootloader_iram_seg_len = 0x9000;
 
 /* Start of the lower region is determined by region size and the end of the higher region */
 bootloader_dram_seg_end = bootloader_usable_dram_end - bootloader_stack_overhead; /* 0x4087c610 - 0x2000 = 0x4087a610 */
@@ -46,7 +46,7 @@
  * 2. Update the value in this assert.
  * 3. Update SRAM_DRAM_END in components/esp_system/ld/esp32c6/memory.ld.in to the same value.
  */
-ASSERT(bootloader_iram_loader_seg_start == 0x4086E610, "bootloader_iram_loader_seg_start inconsistent with SRAM_DRAM_END");
+ASSERT(bootloader_iram_loader_seg_start == 0x40869610, "bootloader_iram_loader_seg_start inconsistent with SRAM_DRAM_END");
 
 /*  Default entry point:  */
 ENTRY(main);
@@ -59,43 +59,10 @@
     _loader_text_start = ABSOLUTE(.);
     *(.stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
     *(.iram1 .iram1.*) /* catch stray IRAM_ATTR */
-    *libhal.a:bootloader_flash.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_flash_config_esp32c6.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_clock_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_init.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_common.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_common_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_random.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_random*.*(.literal.bootloader_random_disable .text.bootloader_random_disable)
-    *libhal.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable)
-    *libhal.a:bootloader_efuse.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_utility.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_sha.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_console.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_console_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_panic.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_soc.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_image_format.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_encrypt.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_encryption_secure_features.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_partitions.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot_secure_features.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot_signatures_bootloader.*(.literal .text .literal.* .text.*)
-    *libhal.a:wdt_hal_iram.*(.literal .text .literal.* .text.*)
-    *libhal.a:mmu_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:cache_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:efuse_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_table.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_fields.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_api.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_utility.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_api_key.*(.literal .text .literal.* .text.*)
-    *libhal.a:rtc_clk.*(.literal .text .literal.* .text.*)
-    *libhal.a:rtc_time.*(.literal .text .literal.* .text.*)
-    *libhal.a:regi2c_ctrl.*(.literal .text .literal.* .text.*)
+    *libhal.a:*.*(.literal .text .literal.* .text.*)
     *esp_mcuboot.*(.literal .text .literal.* .text.*)
     *esp_loader.*(.literal .text .literal.* .text.*)
+    *main.*(.literal .text .literal.* .text.*)
     *(.fini.literal)
     *(.fini)
     *(.gnu.version)
@@ -110,7 +77,6 @@
     *(.init)
   } > iram_seg
 
-
   /* Shared RAM */
   .dram0.bss (NOLOAD) :
   {
diff --git a/boot/espressif/port/esp32h2/ld/bootloader.ld b/boot/espressif/port/esp32h2/ld/bootloader.ld
index fa6d26f..b4330bf 100644
--- a/boot/espressif/port/esp32h2/ld/bootloader.ld
+++ b/boot/espressif/port/esp32h2/ld/bootloader.ld
@@ -24,9 +24,9 @@
 /* These lengths can be adjusted, if necessary: */
 bootloader_usable_dram_end = 0x4084cfd0;
 bootloader_stack_overhead = 0x2000; /* For safety margin between bootloader data section and startup stacks */
-bootloader_dram_seg_len = 0x5000;
+bootloader_dram_seg_len = 0xA000;
 bootloader_iram_loader_seg_len = 0x7000;
-bootloader_iram_seg_len = 0x3000;
+bootloader_iram_seg_len = 0x8800;
 
 /* Start of the lower region is determined by region size and the end of the higher region */
 bootloader_dram_seg_end = bootloader_usable_dram_end - bootloader_stack_overhead;
@@ -47,7 +47,7 @@
  * 2. Update the value in this assert.
  * 3. Update SRAM_DRAM_END in components/esp_system/ld/esp32h2/memory.ld.in to the same value.
  */
-ASSERT(bootloader_iram_loader_seg_start == 0x4083EFD0, "bootloader_iram_loader_seg_start inconsistent with SRAM_DRAM_END");
+ASSERT(bootloader_iram_loader_seg_start == 0x40839FD0, "bootloader_iram_loader_seg_start inconsistent with SRAM_DRAM_END");
 
 /*  Default entry point:  */
 ENTRY(main);
@@ -60,43 +60,10 @@
     _loader_text_start = ABSOLUTE(.);
     *(.stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
     *(.iram1 .iram1.*) /* catch stray IRAM_ATTR */
-    *libhal.a:bootloader_flash.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_flash_config_esp32h2.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_clock_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_init.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_common.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_common_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_random.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_random*.*(.literal.bootloader_random_disable .text.bootloader_random_disable)
-    *libhal.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable)
-    *libhal.a:bootloader_efuse.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_utility.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_sha.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_console.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_console_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_panic.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_soc.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_image_format.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_encrypt.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_encryption_secure_features.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_partitions.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot_secure_features.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot_signatures_bootloader.*(.literal .text .literal.* .text.*)
-    *libhal.a:wdt_hal_iram.*(.literal .text .literal.* .text.*)
-    *libhal.a:mmu_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:cache_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:efuse_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_table.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_fields.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_api.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_utility.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_api_key.*(.literal .text .literal.* .text.*)
-    *libhal.a:rtc_clk.*(.literal .text .literal.* .text.*)
-    *libhal.a:rtc_time.*(.literal .text .literal.* .text.*)
-    *libhal.a:regi2c_ctrl.*(.literal .text .literal.* .text.*)
+    *libhal.a:*.*(.literal .text .literal.* .text.*)
     *esp_mcuboot.*(.literal .text .literal.* .text.*)
     *esp_loader.*(.literal .text .literal.* .text.*)
+    *main.*(.literal .text .literal.* .text.*)
     *(.fini.literal)
     *(.fini)
     *(.gnu.version)
diff --git a/boot/espressif/port/esp32s2/ld/bootloader.ld b/boot/espressif/port/esp32s2/ld/bootloader.ld
index 005c046..cf159c3 100644
--- a/boot/espressif/port/esp32s2/ld/bootloader.ld
+++ b/boot/espressif/port/esp32s2/ld/bootloader.ld
@@ -12,9 +12,9 @@
 
 MEMORY
 {
-  iram_seg (RWX) :                  org = 0x40048000, len = 0x8000
-  iram_loader_seg (RWX) :           org = 0x40050000, len = 0x5000
-  dram_seg (RW) :                   org = 0x3FFE5000, len = 0x8E00
+  iram_seg (RWX) :                  org = 0x40047000, len = 0x9000
+  iram_loader_seg (RWX) :           org = 0x40050000, len = 0x6000
+  dram_seg (RW) :                   org = 0x3FFE6000, len = 0x9000
 }
 
 /*  Default entry point:  */
@@ -28,45 +28,10 @@
     _loader_text_start = ABSOLUTE(.);
     *(.stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
     *(.iram1 .iram1.*) /* catch stray IRAM_ATTR */
-    *libhal.a:bootloader_flash.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_flash_config_esp32s2.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_clock_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_init.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_common.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_common_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_flash.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_random.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_random*.*(.literal.bootloader_random_disable .text.bootloader_random_disable)
-    *libhal.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable)
-    *libhal.a:bootloader_efuse.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_utility.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_sha.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_console.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_console_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_panic.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_soc.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_image_format.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_encrypt.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_encryption_secure_features.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_partitions.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot_secure_features.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot_signatures_bootloader.*(.literal .text .literal.* .text.*)
-    *libhal.a:wdt_hal_iram.*(.literal .text .literal.* .text.*)
-    *libhal.a:mmu_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:cache_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:efuse_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_table.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_fields.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_api.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_utility.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_api_key.*(.literal .text .literal.* .text.*)
-    *libhal.a:rtc_clk.*(.literal .text .literal.* .text.*)
-    *libhal.a:rtc_time.*(.literal .text .literal.* .text.*)
-    *libhal.a:regi2c_ctrl.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_rom_regi2c_esp32s2.*(.literal .text .literal.* .text.*)
+    *libhal.a:*.*(.literal .text .literal.* .text.*)
     *esp_mcuboot.*(.literal .text .literal.* .text.*)
     *esp_loader.*(.literal .text .literal.* .text.*)
+    *main.*(.literal .text .literal.* .text.*)
     *(.fini.literal)
     *(.fini)
     *(.gnu.version)
diff --git a/boot/espressif/port/esp32s3/ld/bootloader.ld b/boot/espressif/port/esp32s3/ld/bootloader.ld
index 4fe9cd6..082081e 100644
--- a/boot/espressif/port/esp32s3/ld/bootloader.ld
+++ b/boot/espressif/port/esp32s3/ld/bootloader.ld
@@ -12,9 +12,9 @@
 
 MEMORY
 {
-  iram_seg (RWX) :                  org = 0x403B2000, len = 0x8000
+  iram_seg (RWX) :                  org = 0x403B0000, len = 0xA000
   iram_loader_seg (RWX) :           org = 0x403BA000, len = 0x6000
-  dram_seg (RW) :                   org = 0x3FCD8000, len = 0x9A00
+  dram_seg (RW) :                   org = 0x3FCD0000, len = 0x9A00
 }
 
 /*  Default entry point:  */
@@ -28,45 +28,10 @@
     _loader_text_start = ABSOLUTE(.);
     *(.stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
     *(.iram1 .iram1.*) /* catch stray IRAM_ATTR */
-    *libhal.a:bootloader_flash.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_flash_config_esp32s3.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_clock_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_init.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_common.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_common_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_flash.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_random.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_random*.*(.literal.bootloader_random_disable .text.bootloader_random_disable)
-    *libhal.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable)
-    *libhal.a:bootloader_efuse.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_utility.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_sha.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_console.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_console_loader.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_panic.*(.literal .text .literal.* .text.*)
-    *libhal.a:bootloader_soc.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_image_format.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_encrypt.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_encryption_secure_features.*(.literal .text .literal.* .text.*)
-    *libhal.a:flash_partitions.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot_secure_features.*(.literal .text .literal.* .text.*)
-    *libhal.a:secure_boot_signatures_bootloader.*(.literal .text .literal.* .text.*)
-    *libhal.a:wdt_hal_iram.*(.literal .text .literal.* .text.*)
-    *libhal.a:mmu_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:cache_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:efuse_hal.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_table.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_fields.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_api.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_utility.*(.literal .text .literal.* .text.*)
-    *libhal.a:esp_efuse_api_key.*(.literal .text .literal.* .text.*)
-    *libhal.a:rtc_clk.*(.literal .text .literal.* .text.*)
-    *libhal.a:rtc_time.*(.literal .text .literal.* .text.*)
-    *libhal.a:regi2c_ctrl.*(.literal .text .literal.* .text.*)
-    *libhal.a:app_cpu_start.*(.literal .text .literal.* .text.*)
+    *libhal.a:*.*(.literal .text .literal.* .text.*)
     *esp_mcuboot.*(.literal .text .literal.* .text.*)
     *esp_loader.*(.literal .text .literal.* .text.*)
+    *main.*(.literal .text .literal.* .text.*)
     *(.fini.literal)
     *(.fini)
     *(.gnu.version)
diff --git a/boot/espressif/port/esp_loader.c b/boot/espressif/port/esp_loader.c
index 04d92c6..9074665 100644
--- a/boot/espressif/port/esp_loader.c
+++ b/boot/espressif/port/esp_loader.c
@@ -74,10 +74,10 @@
         FIH_PANIC;
     }
 
-    BOOT_LOG_INF("DRAM segment: start=0x%x, size=0x%x, vaddr=0x%x", load_header.dram_flash_offset, load_header.dram_size, load_header.dram_dest_addr);
+    BOOT_LOG_INF("DRAM segment: start=0x%x, size=0x%x, vaddr=0x%x", fap->fa_off + load_header.dram_flash_offset, load_header.dram_size, load_header.dram_dest_addr);
     load_segment(fap, load_header.dram_flash_offset, load_header.dram_size, load_header.dram_dest_addr);
 
-    BOOT_LOG_INF("IRAM segment: start=0x%x, size=0x%x, vaddr=0x%x", load_header.iram_flash_offset, load_header.iram_size, load_header.iram_dest_addr);
+    BOOT_LOG_INF("IRAM segment: start=0x%x, size=0x%x, vaddr=0x%x", fap->fa_off + load_header.iram_flash_offset, load_header.iram_size, load_header.iram_dest_addr);
     load_segment(fap, load_header.iram_flash_offset, load_header.iram_size, load_header.iram_dest_addr);
 
     BOOT_LOG_INF("start=0x%x", load_header.entry_addr);
diff --git a/boot/espressif/tools/utils.cmake b/boot/espressif/tools/utils.cmake
index 8e3b0c2..238b30e 100644
--- a/boot/espressif/tools/utils.cmake
+++ b/boot/espressif/tools/utils.cmake
@@ -23,7 +23,7 @@
                     OR ("${CONFIG_VALUE}" STREQUAL "Y"))
                     set(CONFIG_VALUE 1)
                 endif()
-                add_definitions(-D${CONFIG_NAME}=${CONFIG_VALUE})
+                add_compile_definitions(${CONFIG_NAME}=${CONFIG_VALUE})
                 set(${CONFIG_NAME} ${CONFIG_VALUE} PARENT_SCOPE)
             endif()
         endif()