diff options
Diffstat (limited to 'firmware/target/arm/s3c2440/app.lds')
-rw-r--r-- | firmware/target/arm/s3c2440/app.lds | 46 |
1 files changed, 17 insertions, 29 deletions
diff --git a/firmware/target/arm/s3c2440/app.lds b/firmware/target/arm/s3c2440/app.lds index 86f37d5a29..e6efe62656 100644 --- a/firmware/target/arm/s3c2440/app.lds +++ b/firmware/target/arm/s3c2440/app.lds @@ -16,12 +16,9 @@ INPUT(target/arm/s3c2440/crt0.o) #endif #include "cpu.h" -#define DRAMSIZE (MEMORYSIZE * 0x100000) - 0x100 - STUBOFFSET - PLUGINSIZE - CODECSIZE - LCD_BUFFER_SIZE - TTB_SIZE +#define DRAMSIZE (MEMORYSIZE * 0x100000) - STUBOFFSET - PLUGINSIZE - CODECSIZE - LCD_BUFFER_SIZE - TTB_SIZE -#define DRAMORIG 0x00000100 + STUBOFFSET -#define IRAMORIG DRAMORIG -#define IRAM DRAM -#define IRAMSIZE 0x1000 +#define DRAMORIG 0x00000000 + STUBOFFSET /* End of the audio buffer, where the codec buffer starts */ #define ENDAUDIOADDR (DRAMORIG + DRAMSIZE) @@ -36,18 +33,26 @@ MEMORY SECTIONS { - .text : + .vectors DRAMORIG : { - loadaddress = .; - _loadaddress = .; - . = ALIGN(0x200); + _vectorstart = .; + *(.vectors*); *(.init.text) + . = ALIGN(0x4); + } > DRAM + + .text : + { + _textstart = .; + *(.text) *(.text*) *(.glue_7) *(.glue_7t) . = ALIGN(0x4); } > DRAM + _textcopy = LOADADDR(.text); + .rodata : { *(.rodata) /* problems without this, dunno why */ @@ -55,35 +60,18 @@ SECTIONS *(.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 ) + .data : { - _datastart = .; *(.data*) . = ALIGN(0x4); - _dataend = .; } > DRAM /DISCARD/ : { *(.eh_frame) - } - - .vectors 0x0 : - { - _vectorsstart = .; - *(.vectors); - _vectorsend = .; - } AT> DRAM - - _vectorscopy = LOADADDR(.vectors); + } .iram : { @@ -97,7 +85,7 @@ SECTIONS _iramcopy = LOADADDR(.iram); - .ibss (NOLOAD) : + .ibss : { _iedata = .; *(.ibss) |