diff options
Diffstat (limited to 'firmware/target/arm/s3c2440/boot.lds')
-rw-r--r-- | firmware/target/arm/s3c2440/boot.lds | 101 |
1 files changed, 75 insertions, 26 deletions
diff --git a/firmware/target/arm/s3c2440/boot.lds b/firmware/target/arm/s3c2440/boot.lds index cc20fbe86f..4516c7ddb0 100644 --- a/firmware/target/arm/s3c2440/boot.lds +++ b/firmware/target/arm/s3c2440/boot.lds @@ -7,44 +7,93 @@ INPUT(target/arm/s3c2440/crt0.o) #define DRAMSIZE (MEMORYSIZE * 0x100000) -#define DRAMORIG 0x30000000 -#define IRAMORIG 0x40000000 -#define IRAMSIZE 4K -#define FLASHORIG 0x0000000 +#define DRAMORIG 0x00000000 +#define IRAMORIG 0x40000000 +#define IRAMSIZE 4K +#define FLASHORIG 0x00000000 #define FLASHSIZE 1M -SECTIONS +MEMORY { - . = DRAMORIG + 0x1000000; + DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE +} - .text : { +SECTIONS +{ + .vectors DRAMORIG : + { + _vectorstart = .; + *(.vectors*); *(.init.text) + . = ALIGN(0x4); + } > DRAM + + .text : + { + _textstart = .; + *(.text) *(.text*) - } + *(.glue_7) + *(.glue_7t) + . = ALIGN(0x4); + } > DRAM - .data : { + _textcopy = LOADADDR(.text); + + .rodata : + { + *(.rodata) /* problems without this, dunno why */ + *(.rodata*) + *(.rodata.str1.1) + *(.rodata.str1.4) + . = ALIGN(0x4); + } > DRAM + + .data : + { + *(.data*) + . = ALIGN(0x4); + } > DRAM + + /DISCARD/ : + { + *(.eh_frame) + } + + .iram : + { + _iramstart = .; *(.icode) *(.irodata) *(.idata) - *(.data*) + . = ALIGN(0x4); + _iramend = .; + } > DRAM + + _iramcopy = LOADADDR(.iram); + + .ibss : + { + _iedata = .; + *(.ibss) . = ALIGN(0x4); - _dataend = . ; - } + _iend = .; + } > DRAM .stack : { - *(.stack) - _stackbegin = .; - stackbegin = .; - . += 0x2000; - _stackend = .; - stackend = .; - } - .bss : { - _edata = .; - *(.bss*); - *(.ibss); - *(COMMON) - _end = .; - } + *(.stack) + stackbegin = .; + . += 0x2000; + stackend = .; + } > DRAM + + .bss : + { + _edata = .; + *(.bss*) + *(COMMON) + . = ALIGN(0x4); + _end = .; + } > DRAM } |