rendered paste bodyIndex: firmware/app.lds
===================================================================
--- firmware/app.lds (revision 15577)
+++ firmware/app.lds (working copy)
@@ -60,9 +60,8 @@
#define IRAMSIZE 0x7000
#elif CONFIG_CPU==S3C2440
#define DRAMORIG 0x00000100 + STUBOFFSET
-#define IRAMORIG DRAMORIG
+#define IRAMORIG 0x40000000
#define IRAMSIZE 0x1000
-#define IRAM DRAM
#elif CONFIG_CPU==DM320
#define DRAMORIG 0x00900000 + STUBOFFSET
#define IRAMORIG 0x00000000
@@ -86,9 +85,7 @@
MEMORY
{
DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
-#if CONFIG_CPU != S3C2440
IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
-#endif
#if CONFIG_CPU==PNX0101
IRAM0 : ORIGIN = IRAM0ORIG, LENGTH = IRAM0SIZE
#endif
@@ -182,7 +179,94 @@
_end = .;
} > DRAM
-#else /* End DM320 */
+#elif CONFIG_CPU==S3C2440
+ .text :
+ {
+ loadaddress = .;
+ _loadaddress = .;
+ . = ALIGN(0x200);
+ *(.init.text)
+ *(.text*)
+ *(.glue_7)
+ *(.glue_7t)
+ . = ALIGN(0x4);
+ } > DRAM
+
+ .rodata :
+ {
+ *(.rodata) /* problems without this, dunno why */
+ *(.rodata*)
+ *(.rodata.str1.1)
+ *(.rodata.str1.4)
+ . = ALIGN(0x4);
+
+ /* Pseudo-allocate the copies of the data sections */
+ _datacopy = .;
+ } > DRAM
+
+ /* TRICK ALERT! For RAM execution, we put the .data section at the
+ same load address as the copy. Thus, we don't waste extra RAM
+ when we don't actually need the copy. */
+ .data : AT ( _datacopy )
+ {
+ _datastart = .;
+ *(.data*)
+ . = ALIGN(0x4);
+ _dataend = .;
+ } > DRAM
+
+ /DISCARD/ :
+ {
+ *(.eh_frame)
+ }
+
+ .vectors 0x0 :
+ {
+ _vectorsstart = .;
+ *(.vectors);
+ _vectorsend = .;
+ } AT> DRAM
+
+ _vectorscopy = LOADADDR(.vectors);
+
+ .iram IRAMORIG :
+ {
+ _iramstart = .;
+ *(.icode)
+ *(.irodata)
+ *(.idata)
+ _iramend = .;
+ } > IRAM AT> DRAM
+
+ _iramcopy = LOADADDR(.iram);
+
+ .ibss (NOLOAD) :
+ {
+ _iedata = .;
+ *(.ibss)
+ . = ALIGN(0x4);
+ _iend = .;
+ } > DRAM
+
+ .stack ADDR(.data) + SIZEOF(.data) + SIZEOF(.iram) + SIZEOF(.vectors):
+ {
+ *(.stack)
+ stackbegin = .;
+ . += 0x2000;
+ stackend = .;
+ } > DRAM
+
+ .bss :
+ {
+ _edata = .;
+ *(.bss*)
+ *(COMMON)
+ . = ALIGN(0x4);
+ _end = .;
+ } > DRAM
+
+#else /* End CONFIG_CPU */
+
#if !defined(CPU_ARM)
.vectors :
{
@@ -241,11 +325,7 @@
}
#if defined(CPU_ARM)
-#if CONFIG_CPU==DM320
- .vectors IRAMORIG :
-#else
.vectors 0x0 :
-#endif
{
_vectorsstart = .;
*(.vectors);
@@ -253,8 +333,6 @@
#if CONFIG_CPU==PNX0101
*(.dmabuf)
} >IRAM0 AT> DRAM
-#elif CONFIG_CPU==DM320
- } > IRAM AT> DRAM
#else
} AT> DRAM
#endif
@@ -264,8 +342,6 @@
#if CONFIG_CPU==PNX0101
.iram IRAMORIG + SIZEOF(.vectors) :
-#elif CONFIG_CPU==S3C2440 || CONFIG_CPU==DM320
- .iram :
#else
.iram IRAMORIG :
#endif
@@ -325,7 +401,7 @@
#if defined(CPU_COLDFIRE)
.bss ADDR(.data) + SIZEOF(.data) + SIZEOF(.iram):
-#elif defined(CPU_ARM) && CONFIG_CPU != S3C2440
+#elif defined(CPU_ARM)
.bss ADDR(.data) + SIZEOF(.data) + SIZEOF(.iram) + SIZEOF(.vectors):
#else
.bss :