diff gsm-fw/finlink/ld-script.src @ 632:02d14592bb73

ramImage build change: load iram.text directly into IRAM w/o wasting XRAM
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Mon, 01 Sep 2014 18:02:06 +0000
parents aa93994e9f63
children da72b51c0572
line wrap: on
line diff
--- a/gsm-fw/finlink/ld-script.src	Mon Sep 01 17:04:19 2014 +0000
+++ b/gsm-fw/finlink/ld-script.src	Mon Sep 01 18:02:06 2014 +0000
@@ -15,9 +15,11 @@
 
 include(`../include/config.m4')dnl
 MEMORY {
+ifelse(Buildmem-FLASH_BOOT_VIA_BOOTROM,FLASH-1,
+`	FLASH_OVERLAY : ORIGIN = 0, LENGTH = 0x2000')
 ifelse(Buildmem,FLASH,
-`	FLASH_OVERLAY : ORIGIN = 0, LENGTH = 0x2000
-	FLASH : ORIGIN = 0x2000,    LENGTH = CONFIG_FWFLASH_SIZE - 0x2000')
+`	FLASH : ORIGIN = FLASHIMAGE_BASE_ADDR,
+		LENGTH = CONFIG_FWFLASH_SIZE - FLASHIMAGE_BASE_ADDR')
 	IRAM : ORIGIN = 0x00800000, LENGTH = CONFIG_IRAM_SIZE
 	XRAM : ORIGIN = 0x01000000, LENGTH = CONFIG_XRAM_SIZE
 }
@@ -27,6 +29,13 @@
 ')dnl
 
 SECTIONS {
+ifelse(Buildmem,FLASH,`
+	/* Flash boot entry point */
+	flashboot.text FLASHIMAGE_BASE_ADDR : {
+		*(flashboot.text)
+	} > FLASH
+')dnl
+
 	/* XIP code, going into flash or XRAM emulating flash */
 	xip.text : {
 		*(xip.text*)
@@ -49,10 +58,12 @@
 		*libgpf.iram.a:(.text*)
 		*libc.a:(.text*)
 		*libgcc.a:(.text*)
-	} > IRAM AT> Buildmem
-	__iramtext_ram_addr = ADDR(iram.text);
+	} > IRAM Put_in_flash
+ifelse(Buildmem,FLASH,
+`	__iramtext_ram_addr = ADDR(iram.text);
 	__iramtext_flash_addr = LOADADDR(iram.text);
 	__iramtext_size = SIZEOF(iram.text);
+')dnl
 
 	/* all .rodata will stay in flash */
 	.rodata : {
@@ -67,7 +78,7 @@
 	 */
 	.data : {
 		*(.data*)
-	} > XRAM AT> Buildmem
+	} > XRAM Put_in_flash
 ifelse(Buildmem,FLASH,
 `	__initdata_ram_addr = ADDR(.data);
 	__initdata_flash_addr = LOADADDR(.data);