diff options
author | Andrew Hsieh <andrewhsieh@google.com> | 2014-06-13 12:38:00 -0700 |
---|---|---|
committer | Andrew Hsieh <andrewhsieh@google.com> | 2014-06-13 12:38:00 -0700 |
commit | 54f1b3cf509cd889905287cb8ce6c5ae33911a21 (patch) | |
tree | e39b1a7fa04db86a8215b7f9d4656d74e394aec0 /binutils-2.25/ld/scripttempl/elf32cr16c.sc | |
parent | 2a6558a8ecfb81d75215b4ec7dc61113e12cfd5f (diff) | |
download | toolchain_binutils-54f1b3cf509cd889905287cb8ce6c5ae33911a21.zip toolchain_binutils-54f1b3cf509cd889905287cb8ce6c5ae33911a21.tar.gz toolchain_binutils-54f1b3cf509cd889905287cb8ce6c5ae33911a21.tar.bz2 |
Add upstream binutils-2.25 snapshot 4/4 2014
For MIPS -mmsa support
Change-Id: I08c4f002fa7b33dec85ed75956e6ab551bb03c96
Diffstat (limited to 'binutils-2.25/ld/scripttempl/elf32cr16c.sc')
-rw-r--r-- | binutils-2.25/ld/scripttempl/elf32cr16c.sc | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/binutils-2.25/ld/scripttempl/elf32cr16c.sc b/binutils-2.25/ld/scripttempl/elf32cr16c.sc new file mode 100644 index 0000000..84fc61c --- /dev/null +++ b/binutils-2.25/ld/scripttempl/elf32cr16c.sc @@ -0,0 +1,45 @@ +# Linker Script for National Semiconductor's CR16C-ELF32. + +test -z "$ENTRY" && ENTRY=_start +cat <<EOF + +/* Example Linker Script for linking NS CR16C or CR16CPlus + elf32 files, which were compiled with either the near data + model or the default data model. */ + +${RELOCATING+ENTRY(${ENTRY})} + +MEMORY +{ + near_rom : ORIGIN = 0x4, LENGTH = 512K - 4 + near_ram : ORIGIN = 512K, LENGTH = 512K - 64K + rom : ORIGIN = 1M, LENGTH = 3M + ram : ORIGIN = 4M, LENGTH = 10M +} + +SECTIONS +{ +/* The heap is located in near memory, to suit both the near and + default data models. The heap and stack are aligned to the bus + width, as a speed optimization for accessing data located + there. The alignment to 4 bytes is compatible for both the CR16C + bus width (2 bytes) and CR16CPlus bus width (4 bytes). */ + + .text : { __TEXT_START = .; *(.text) __TEXT_END = .; } > rom + .rdata : { __RDATA_START = .; *(.rdata_4) *(.rdata_2) *(.rdata_1) __RDATA_END = .; } > near_rom + .ctor ALIGN(4) : { __CTOR_LIST = .; *(.ctors) __CTOR_END = .; } > near_rom + .dtor ALIGN(4) : { __DTOR_LIST = .; *(.dtors) __DTOR_END = .; } > near_rom + .data : { __DATA_START = .; *(.data_4) *(.data_2) *(.data_1) *(.data) __DATA_END = .; } > ram AT > rom + .bss (NOLOAD) : { __BSS_START = .; *(.bss_4) *(.bss_2) *(.bss_1) *(.bss) *(COMMON) __BSS_END = .; } > ram + .nrdata : { __NRDATA_START = .; *(.nrdat_4) *(.nrdat_2) *(.nrdat_1) __NRDATA_END = .; } > near_rom + .ndata : { __NDATA_START = .; *(.ndata_4) *(.ndata_2) *(.ndata_1) __NDATA_END = .; } > near_ram AT > rom + .nbss (NOLOAD) : { __NBSS_START = .; *(.nbss_4) *(.nbss_2) *(.nbss_1) *(.ncommon) __NBSS_END = .; } > near_ram + .heap (NOLOAD) : { . = ALIGN(4); __HEAP_START = .; . += 0x2000; __HEAP_MAX = .; } > near_ram + .stack (NOLOAD) : { . = ALIGN(4); . += 0x6000; __STACK_START = .; } > ram + .istack (NOLOAD) : { . = ALIGN(2); . += 0x100; __ISTACK_START = .; } > ram +} + +__DATA_IMAGE_START = LOADADDR(.data); +__NDATA_IMAGE_START = LOADADDR(.ndata); + +EOF |