2010-10-23 Mark Mitchell <mark@codesourcery.com>
[binutils.git] / ld / scripttempl / elf32cr16c.sc
blob84fc61c617d2ccaef6888c582a7853b7553877cf
1 # Linker Script for National Semiconductor's CR16C-ELF32.
3 test -z "$ENTRY" && ENTRY=_start
4 cat <<EOF
6 /* Example Linker Script for linking NS CR16C or CR16CPlus
7    elf32 files, which were compiled with either the near data
8    model or the default data model.  */
10 ${RELOCATING+ENTRY(${ENTRY})}
12 MEMORY
14   near_rom  : ORIGIN = 0x4,     LENGTH = 512K - 4
15   near_ram  : ORIGIN = 512K,    LENGTH = 512K - 64K
16   rom       : ORIGIN = 1M,      LENGTH = 3M
17   ram       : ORIGIN = 4M,      LENGTH = 10M
20 SECTIONS
22 /* The heap is located in near memory, to suit both the near and
23    default data models.  The heap and stack are aligned to the bus
24    width, as a speed optimization for accessing  data located
25    there. The alignment to 4 bytes is compatible for both the CR16C
26    bus width (2 bytes) and CR16CPlus bus width (4 bytes).  */
28   .text            : { __TEXT_START = .;   *(.text)                                        __TEXT_END = .; } > rom      
29   .rdata           : { __RDATA_START = .;  *(.rdata_4) *(.rdata_2) *(.rdata_1)             __RDATA_END = .; } > near_rom
30   .ctor ALIGN(4)   : { __CTOR_LIST = .;    *(.ctors)                                       __CTOR_END = .; } > near_rom
31   .dtor ALIGN(4)   : { __DTOR_LIST = .;    *(.dtors)                                       __DTOR_END = .; } > near_rom
32   .data            : { __DATA_START = .;   *(.data_4) *(.data_2) *(.data_1) *(.data)       __DATA_END = .; } > ram AT > rom
33   .bss (NOLOAD)    : { __BSS_START = .;    *(.bss_4) *(.bss_2) *(.bss_1) *(.bss) *(COMMON) __BSS_END = .; } > ram
34   .nrdata          : { __NRDATA_START = .; *(.nrdat_4) *(.nrdat_2) *(.nrdat_1)             __NRDATA_END =  .; } > near_rom
35   .ndata           : { __NDATA_START = .;  *(.ndata_4) *(.ndata_2) *(.ndata_1)             __NDATA_END = .; } > near_ram AT > rom
36   .nbss (NOLOAD)   : { __NBSS_START = .;   *(.nbss_4) *(.nbss_2) *(.nbss_1) *(.ncommon)    __NBSS_END = .; } > near_ram
37   .heap (NOLOAD)   : { . = ALIGN(4); __HEAP_START = .; . += 0x2000;                        __HEAP_MAX = .; } > near_ram
38   .stack (NOLOAD)  : { . = ALIGN(4); . += 0x6000; __STACK_START = .; } > ram
39   .istack (NOLOAD) : { . = ALIGN(2); . += 0x100; __ISTACK_START = .; } > ram
42 __DATA_IMAGE_START = LOADADDR(.data);
43 __NDATA_IMAGE_START = LOADADDR(.ndata);
45 EOF